专利摘要:
AUDIO ENCODER, AUDIO DECODER, METHOD OF ENCODING AND DECODING AN AUDIO INFORMATION, AND COMPUTER PROGRAM TO OBTAIN A CONTEX-TO SUB-REGION VALUE BASED ON A PREVIOUSLY CODED VALUE STANDARD VALUE An audio decoder to provide decoded audio information based on encoded audio information comprises an arithmetic decoder to provide several decoded spectral values based on an arithmetically encoded representation of the spectral values and a domain domain frequency converter of time to provide a time domain audio representation using the decoded spectral values to obtain the decoded audio information. The arithmetic decoder is configured to select a mapping rule that describes a mapping of a code value to a symbol code depending on a context state described by a current numeric context value.
公开号:BR112012017258B1
申请号:R112012017258-1
申请日:2011-01-11
公开日:2020-12-29
发明作者:Guillaume Fuchs;Markus Multrus;Nikolaus Rettelbach;Vignesh Subbaraman;Oliver Weiss;Marc Gayer;Patrick Warmbold;Christian GRIEBEL
申请人:Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V;
IPC主号:
专利说明:

TECHNICAL FIELD
1. The embodiments according to the invention are related to an audio decoder to provide decoded audio information based on encoded audio information, an audio encoder to provide encoded audio information based on audio information input, a method for providing decoded audio information based on encoded audio information, a method for providing encoded audio information based on input audio information and a computer program.
2. The achievements according to the invention are related to an enhanced noise-free spectral encoding, which can be used in an audio encoder or decoder, such as, for example, a so-called unified speech and audio encoder (USAC). HISTORY OF THE INVENTION
3. In the following, the history of the invention will be explained briefly in order to facilitate the understanding of the invention and its advantages. Over the past decade, great efforts have been made to create the possibility of digitally storing and distributing audio content with good bit rate efficiency. An important achievement in this way is the definition of the International Standard ISO / IEC 14496-3. Part 3 of this Standard refers to the encoding and decoding of audio content, and subpart 4. of part 3 refers to general audio encoding. Subpart 4 of ISO / IEC 14496 part 3 defines a concept for encoding and decoding general audio content. In addition, other enhancements have been proposed in order to improve quality and / or reduce the bitsexigidae rate.
4. According to the concept described in said Standard, a time domain audio signal is converted into a time-frequency representation. The transformation of the time domain into a time-frequency domain is usually carried out using transformation blocks, which are also called “frames”, of time domain samples. It has been found that it is advantageous to use overlapping frames, which are changed, for example, by half a frame, since the overlay allows to efficiently (or at least reduce) artifacts. In addition, it was discovered that a window should be performed to avoid the artifacts originating from this limited time processing.
5. By transforming a window portion of the input audio signal from the time domain into the time frequency domain, energy compaction is obtained in many cases, so that some of the spectral values comprise a magnitude significantly greater than several other spectral values. Thus, in many cases, there is a comparatively small number of spectral values having a magnitude, which is significantly above an average magnitude of the spectral values. A typical example of a time domain for transforming the frequency domain into the time domain resulting in energy compression is called the modified discrete cosine transformation (MDCT).
6. The spectral values are generally scaled and quantized according to a psychoacoustic model, so that the quantization errors are comparatively smaller for more important psychoacoustically spectral values, and are comparably higher for less important psychoacoustically spectral values. The scaled and quantized spectral values are encoded to provide an efficient representation of their bit rate.
7. For example, the use of so-called Huffman coding of quantized spectral coefficients is described in International Standard ISO / IEC 14496-3: 2005 (E), part 3, subpart 4.
8. However, it has been observed that the quality of the encoding of spectral values has a significant impact on the required bit rate. Still, it was observed that the complexity of an audio decoder, which is generally implemented in a portable consumer device, and which must then be created cheaply and with low energy consumption, is dependent on the encoding used in the encoding of the spectral values. .
9. In view of this situation, there is a need for a concept to encode and decode audio content, which provides an improved shift between bit rate efficiency and resource efficiency. SUMMARY OF THE INVENTION
10. An embodiment, according to the invention, creates an audio decoder to provide decoded audio information based on encoded audio information. The audio decoder comprises an arithmetic decoder to provide several decoded spectral values based on an arithmetically encoded representation of the spectral values. The audio decoder also comprises a time domain frequency converter to provide a time domain audio representation that uses the decoded spectral values in order to obtain the decoded audio information. The arithmetic decoder is configured to select a mapping rule that describes a mapping of a code value to a symbol code (whose symbol code typically describes a spectral value or several spectral values or a more significant bit plane of a spectral value or several spectral values) depending on a context state described by a current numeric context value. The arithmetic decoder is configured to determine the current numerical context value depending on several spectral values previously decoded. The arithmetic decoder is also configured to obtain various values of context sub-region based on previously decoded spectral values and to store said values of context sub-region. The arithmetic decoder is configured to derive a current numerical context value associated with one or more spectral values to be decoded (or, more precisely, defining a context for decoding the one or more spectral values to be decoded) depending on the sub values - stored context region. The arithmetic decoder is configured to compute the norm of a vector formed by several spectral values previously decoded to obtain a common context sub-region value associated with the different spectral values previously decoded.
11. This realization of the invention is based on the finding that an efficient memory context sub-region information can be obtained by computing the norm of a vector formed by several previously decoded spectral values, since the norm of this vector formed by several previously decoded spectral values it comprises the most relevant context information. When forming a norm, signals of spectral values are generally discarded. However, it was found that the spectral value signals comprise only a subordinate impact on the state of the context, if any, and therefore can be omitted without seriously compromising the significance of the context sub-region value. In addition, it was discovered that the formation of a norm of a vector formed by several spectral values previously decoded, which usually brings with it a weighting effect, allows a reduction of a quantity of information, while still resulting in a context value that reflects the current context situation with sufficient precision. In summary, a memory requirement to store the context in the form of several values of context subregion can be kept small by storing values of context subregion that are based on a computation of the norm of a vector formed by several values decoded spectral data (instead of the spectral values themselves).
12. In a preferred embodiment, the arithmetic decoder is configured to sum up absolute values of several previously decoded spectral values, which are preferably, but not necessarily, associated with adjacent frequency bins of the time domain frequency converter and the a common temporal part of the audio information, to obtain the value of the common context sub-region associated with the various spectral values previously decoded. It has been found that the sum of the absolute values of several previously decoded spectral values, corresponding to a standard computation, is a particularly efficient way of computing significant sub-region context values. It should be noted here that the computation of the sum of absolute values of a vector is equal to the computation of a so-called L-1 standard of the vector. In other words, computing the sum of absolute values of a vector is an example of computing a standard.
13. In a preferred embodiment, the arithmetic decoder is configured to quantize the norm of several previously decoded spectral values, which are associated with adjacent frequency bins of the frequency domain converter in time domain and a common temporal part of the information of audio, to obtain the common context sub-region value associated with the various spectral values previously decoded. The quantization of the standard can, for example, comprise computing the standard on a discrete scale (for example, a sum of absolute integer values) and also limit the result.
14. In a preferred embodiment, the arithmetic decoder is configured to quantize the norm of several previously decoded spectral values, which are preferably, but not necessarily, associated with adjacent frequency bins of the time domain frequency converter and the a common temporal part of the audio information, to obtain the value of the common context sub-region associated with the various spectral values previously decoded. It has been found that the quantization of said standard can help to keep the amount of information reasonably small. For example, quantization can help to reduce the number of bits needed for a representation of the context subregion value and therefore can facilitate the provision of a current numeric context value having a small number of bits.
15. In a preferred embodiment, the arithmetic decoder is configured to sum up absolute values of previously decoded spectral values, which are encoded using a common code value, to obtain the common context sub-region value associated with the various previously decoded spectral values . It has been found that the context accuracy is particularly high if a common context sub-region value is formed for such spectral values that are encoded using a common code value. Thus, each context subregion value can correspond to a code value, which in turn brings good memory efficiency when storing the context subregion value.
16. In a preferred embodiment, the arithmetic decoder is configured to provide signaled decoded spectral values for the time domain frequency converter, and to add absolute values corresponding to the signaled decoded spectral values to obtain the subregion value. common context associated with the different spectral values previously decoded. It has been found that it is sometimes beneficial, in terms of audio quality, to have values flagged as input values for the frequency domain converter in time domain, since this allows to consider stages in the reconstruction of the audio content. However, it has also been found that the omission of phase information (that is, signal information about spectral values) in context sub-region values does not severely impair the accuracy of context-derived information using the values context sub-region, since the phase information, in most cases, is not strongly correlated between different frequency bins.
17. In a preferred embodiment, the arithmetic decoder is configured to derive a limited sum value from a sum of absolute values from previously decoded discrete spectral values (or to derive a limited norm value from a vector norm. formed by several discrete spectral values previously decoded), so that a range of possible values for the limited sum value is less than a range of possible sum values (or such that a range of possible values for the norm value limited is less than a range of possible norm values). It has been found that limiting the values of context subregions allows to reduce several bits needed to store the values of context subregions. It was also found that a reasonable limitation of the sub-region context values does not result in a significant loss of information, since, for spectral values greater than a certain threshold, the context no longer changes significantly.
18. In a preferred embodiment, the arithmetic decoder is configured to obtain a current numerical context value depending on several context subregion values associated with different sets of previously decoded spectral values. This concept allows to efficiently consider different contexts for the decoding of different spectral values (or tuples of spectral values). Keeping a sufficiently fine granularity of the context sub-region values, so that several context sub-region values are used to obtain a single numerical current context value, it is possible to store information of context sub-region significant yet universally usable, from which the actual numerical context value can be derived shortly before the decoding of a spectral value (or a tuple of spectral values) to be decoded.
19. In a preferred embodiment, the arithmetic decoder is configured to obtain a numerical representation of a current numeric context value, so that a first part of the numerical representation of the current numeric context value is determined by a first sum or value value limited sum of absolute values of several previously decoded spectral values (or, more generally, a first norm value or limited norm value), and so that a second part of the numerical representation of the current numerical context value is determined by a second sum value or limited sum value of absolute values of several previously decoded spectral values (or, more generally, a second norm value or limited norm value). It has been found that it is possible to efficiently apply the context subregion values when deriving a current numeric context value. In particular, it has been found that the computed context subregion values as discussed above are well suited to compose a current numerical context value. The computed context subregion values as discussed above are found to be well suited for determining different parts of a numerical representation of the current numerical context value. Thus, both efficient computation of context subregional values and efficient derivation or updating of the current numerical context value can be achieved.
20. In a preferred embodiment, the arithmetic decoder is configured to obtain the current numerical context value, so that a first sum value or limited sum value of absolute values of several previously decoded spectral values (or a first norm value or limited norm value) and a second sum or limited sum value of absolute values of several previously decoded spectral values (or a second norm value or limited norm value) comprise different weights in the current numerical context value. Thus, the different distances from the spectral values, on which the values of the context sub-region are based, from the one or more spectral values to be currently decoded, can be taken into account. Alternatively, a different relative position between the spectral values, on which the context sub-region values are based, and the one or more spectral values to be currently decoded, can be taken into account by applying different numerical weights to the value of current numerical context. Also, an iterative update of the current numeric context value can be facilitated through this concept, since the numerical weights of parts of a numerical representation can be easily changed by applying a change operation.
21. In a preferred embodiment, the arithmetic decoder is configured to modify a numerical representation of a previous numeric context value, which describes a context state associated with one or more previously decoded spectral values, depending on a sum value or a value limited sum of absolute values of several previously decoded spectral values (or a norm value or limited norm value), to obtain a numerical representation of a current numeric context value that describes a context state associated with one or more spectral values to be decoded. In this way, a particularly efficient update of the current numerical context value can be obtained, in which a complete recomputation of the current numerical context value is avoided.
22. In a preferred embodiment, the arithmetic decoder is configured to verify that a sum of several context subregion values is less than or equal to a predetermined sum threshold value, and to selectively modify the current numeric context value depending on a verification result, where each of the context subregion values is a sum value or a limited sum value of absolute values from an associated plurality of previously decoded spectral values (or a norm value or norm value limited). Thus, the presence of an enlarged region of comparatively small spectral values can be detected and the result of the detection can be applied to adapt the context. For example, it can be concluded from the presence of this expanded region of comparatively small spectral values that there is a high probability that the spectral value to be decoded using the current numerical context value is also comparatively small. Thus, the context can be adapted in a particularly efficient way ...
23. In a preferred embodiment, the arithmetic decoder is configured to consider several values of context subregion defined by previously decoded spectral values associated with a previous temporal part of the audio content, and also to consider at least one sub-value of the audio content. context region defined by previously decoded spectral values associated with a current temporal part of the audio content, to obtain a numerical current context value associated with one or more spectral values to be decoded and associated with the current temporal part of the audio content, so that an environment of both previously decoded spectral values temporarily adjacent to the previous temporal part and previously decoded spectral values adjacent to the frequency of the current temporal part are considered to obtain the current numerical context value. Thus, a particularly significant context can be obtained. Also, it should be noted that the aforementioned derivation of the context subregion values keeps the memory requirements for storing the context subregion values of the previous temporal part reasonably small.
24. In a preferred embodiment, the arithmetic decoder is configured to store a set of context subregion values, with each of the context subregion values based on a sum value or limited sum value of absolute values. of several previously decoded spectral values (or, more generally, a norm value of a vector formed by several previously decoded spectral values), for a certain temporal part of the audio information, and to use the subregion values of context to derive a current numerical context value for decoding one or more spectral values of a temporal part of the audio information following the determined temporal part of the audio information while leaving the individual spectral values previously decoded for the determined temporal part of the audio information audio not considered when deriving the current numeric context value. Thus, the efficiency in computing the current numerical context value can be increased. Also, it is no longer necessary to store the individual spectral values previously decoded for an extended period.
25. In a preferred embodiment, the arithmetic decoder is configured to separately decode a magnitude value and a signal from a spectral value. In this case, the arithmetic decoder is configured to leave signals of previously decoded spectral values not considered when determining the current numerical context value for decoding a spectral value to be decoded. It was found that this separate manipulation of the absolute value and the signal of a spectral value does not result in a serious degradation of the coding efficiency, but significantly reduces computational complexity. In addition, it has been found that the computation of context sub-region values based on the computation of a vector norm formed by several previously decoded spectral values is well adapted for use in combination with this concept.
26. An embodiment of the invention creates an audio encoder to provide encoded audio information based on input audio information. The audio encoder comprises a time domain converter in frequency domain with energy compression to provide a frequency domain audio representation based on a time domain representation of the incoming audio information, so that the representation frequency domain audio comprises a set of spectral values. The audio encoder comprises an arithmetic encoder configured to encode a spectral value or a pre-processed version of it, or, equivalently, several spectral values or a pre-processed version of it, using a variable length password. The arithmetic encoder is configured to map a spectral value, or a value of a bit plane more significant than a spectral value, or, equivalently, several spectral values or a value of a more significant bit plane of several spectral values in a value of code. The arithmetic encoder is configured to select a mapping rule that describes a mapping of a spectral value or a more significant bit plane of a spectral value, to a code value, depending on a context state described by a context value numerical current. The arithmetic encoder is configured to determine the current numerical context value depending on several spectral values previously encoded. The arithmetic encoder is configured to obtain various values of context sub-region based on previously encoded spectral values, to store said values of context sub-region and to derive a current numerical context value associated with one or more spectral values to be encoded (or, more precisely, that define a context for encoding the spectral values to be encoded), depending on the stored sub-region context values. The arithmetic encoder is configured to compute the norm of a vector formed by several previously encoded spectral values, to obtain a common context sub-region value associated with the various previously encoded spectral values.
27. Said audio encoder is based on the same timing as the audio decoder described above. Also, said audio encoder can be complemented by any of the features and functionality described above with respect to the audio decoder.
28. Another embodiment according to the invention creates a method for providing decoded audio information based on encoded audio information.
29. Another embodiment according to the invention creates a method for providing encoded audio information based on input audio information.
30. Another embodiment according to the invention creates a computer program to perform one of said methods. BRIEF DESCRIPTION OF THE FIGURES
31. The realizations according to the present invention will subsequently be described with reference to the attached figures, in which:
32. Figure 1 shows a schematic block diagram of an audio encoder, according to an embodiment of the invention;
33. Figure 2 shows a schematic block diagram of an audio decoder, according to an embodiment of the invention;
34. Figure 3 shows a code representation of the pseudo-program of a “values_decode ()” algorithm for decoding spectral values;
35. Figure 4 shows a schematic representation of a context for a state calculation;
36. Figure 5a shows a code representation of the pseudo-program mapping one of a context; “arith_map_context ()” algorithm for
37. Figure 5b shows a code representation of the pseudo-program mapping from another context; “arith_map_context ()” algorithm for
38. Figure 5c shows a code representation of the pseudo-program of an “arith a context state value; _get_context () ”to get
39. Figure 5d shows a code representation of the pseudo-program of another algorithm “arith_get_context ()” to obtain a context state value;
40. Figure 5e shows a code representation of the pseudo-program of an “arith_get_pk ()” algorithm to derive an index value from the cumulative frequency table “pki” from a state value (or a state variable);
41. Figure 5f shows a code representation of the pseudo-program of another algorithm "arith_get_pk ()" to derive an index value from the cumulative frequency table "pki" from a state value (or a state variable);
42. Figure 5g shows a code representation of the pseudo-program of an “arith_decode ()” algorithm for arithmetically decoding a variable-length password symbol;
43. Figure 5h shows a first part of a code representation of the pseudo-program of another algorithm "arith_decode ()" to arithmetically decode a variable password symbol;
44. Figure 5i shows a second part of a code representation of the pseudo-program of another algorithm "arith_decode ()" to arithmetically decode a variable-length password symbol;
45. Figure 5j shows a code representation of the pseudo-program of an algorithm to derive absolute values a, b from spectral values of a common value m;
46. Figure 5k shows a code representation of the pseudo-program of an algorithm to insert the decoded values a, b in an array of decoded spectral values;
47. Figure 5l shows a code representation of the pseudo-program of an “arith_update_context ()” algorithm to obtain a context subregion value based on absolute values a, b of decoded spectral values;
48. Figure 5m shows a code representation of the pseudo-program of an “arith_finish ()” algorithm to fill in the entries for an array of decoded spectral values and an array of context sub-region values;
49. Figure 5n shows a code representation of the pseudo-program of another algorithm to derive absolute values a, b from decoded spectral values from a common value m;
50. Figure 5 shows a code representation of the pseudo-program of an “arith_update_context ()” algorithm for updating an array of decoded spectral values and an array of context sub-region values;
51. Figure 5p shows a code representation of the pseudo-program of an “arith_save_context ()” algorithm to fill entries in an array of decoded spectral values and entries in an array of context sub-region values;
52. Figure 5q shows a legend for the definitions;
53. Figure 5r shows another legend of the definitions;
54. Figure 6a shows a syntax representation of a unified voice and audio coding (USAC) raw data block;
55. Figure 6b shows a syntax representation of a single channel element;
56 Figure 6c shows a syntax representation of
57 an element of the channel pair; Figure 6d shows a syntax representation of
58 an “ICS” control information; Figure 6e shows a syntax representation of
59 a frequency domain channel stream; Figure 6f shows a syntax representation of
60 arithmetically encoded spectral data; Figure 6g shows a syntax representation of
61 decoding a set of spectral values; Figure 6h shows another representation of the decoding syntax of a set of spectral values;
62. Figure 6i shows a legend for the data elements and variables;
63. Figure 6j shows another legend of data elements and variables;
64. Figure 7 shows a schematic block diagram showing that of an audio encoder, of invention; according to the first
65. Figure 8 shows a schematic block diagram that looks like that of an audio decoder, of invention; according to the first
66. Figure 9 shows a graphic representation of a mapping of a current numerical context value to a mapping rule index value, according to the first aspect of the invention;
Fig. 10 shows a schematic block diagram of an audio encoder, according to a second aspect of the invention;
68. Figure 11 shows a schematic block diagram of an audio decoder, according to the second aspect of the invention;
69. Figure 12 shows a schematic block diagram of an audio encoder, according to a third aspect of the invention;
70. Figure 13 shows a schematic block diagram of an audio decoder, according to the third aspect of the invention;
71. Figure 14a shows a schematic representation of a context for a state calculation, as used in accordance with work design 4 of the Design Standard of the USAC Design Standard;
72. Figure 14b shows an overview of the tables as used in the arithmetic coding scheme according to work design 4 of the USAC Design Standard;
73. Figure 15a shows a schematic representation of a context for a state calculation, as used in the embodiments according to the invention;
74. Figure 15b shows an overview of the tables as used in the arithmetic coding scheme according to the present invention;
75. Figure 16a shows a graphical representation of a read-only memory demand for the silent coding scheme, according to the present invention, and according to the USAC Design Standard work project 5 and according to Huffman AAC encoding (advanced audio encoding);
76. Figure 16b shows a graphical representation of a memory demand for read-only data from the total USAC decoder, in accordance with the present invention, and in accordance with the concept in accordance with work design 5 of the USAC Design Standard ;
77. Figure 17 shows a schematic representation of an arrangement for comparing a silent coding according to work design 3 or work design 5 of the USAC Design Standard with a coding scheme according to the present invention;
78. Figure 18 shows a table representation of the average bit rates produced by a USAC arithmetic encoder in accordance with the USAC Design Standard work design 3 and in accordance with an embodiment of the present invention;
79. Figure 19 shows a table representation of minimum and maximum levels of the bit reservoir for an arithmetic decoder according to the working design 3 of the USAC Design Standard and for an arithmetic decoder according to an embodiment of the present invention;
80. Figure 20 shows a table representation of the numbers of the average decoding complexity of a 32-kbit bit stream according to the USAC Design Standard work design 3 for different versions of the arithmetic encoder;
81. Figures 21 (1) and 21 (2) show a table representation of the contents of the table “ari_lookup_m [600]”;
82. Figures 22 (1) to 22 (4) show a table representation of the contents of the table "ari_hash_m [600]";
83. Figures 23 (1) to 23 (7) show a table representation of the contents of the table “ari_cf_m [96] [17]”; and
84. Figure 24 shows a table representation of the contents of the table “ari_cf_r []”. DETAILED DESCRIPTION OF ACHIEVEMENTS Audio encoder according to figure 7
85. Figure 7 shows a schematic block diagram of an audio encoder, according to an embodiment of the invention. The audio encoder 700 is configured to receive incoming audio information 710 and to provide encoded audio information 712 based on it. The audio encoder comprises a time domain converter in frequency domain with energy compression 720 which is configured to provide a frequency domain audio representation 722 based on a time domain representation of the input audio information 710, so that the frequency domain audio representation 722 comprises a set of spectral values. The audio encoder 700 also comprises an arithmetic encoder 730 configured to encode a spectral value (outside the set of spectral values that form the audio representation of frequency domain 722), or a preprocessed version of it, which uses a password. variable length in order to obtain the encoded audio information 712 (which can comprise, for example, several passwords of variable length).
86. The arithmetic encoder 730 is configured to map a spectral value, or a value from a bit plane more significant than a spectral value, to a code value (that is, a variable length password) depending on a state of context. The arithmetic encoder is configured to select a mapping rule that describes a mapping of a spectral value, or of a more significant bit plane of a spectral value, to a code value, depending on a context (current) state. The arithmetic encoder is configured to determine the current context state, or a numerical current context value that describes the current context state, depending on several previously encoded spectral values (preferably, but not necessarily, adjacent). For this purpose, the arithmetic encoder is configured to evaluate the hash table, whose inputs define both significant state numeric values between numeric context values and limits of numeric context value values ranges, where a rule index value mapping is individually associated with a numeric context (current) value being a significant state value, and where a common mapping rule index value is associated with different numerical (current) context values within a range bounded by range limits (where range limits are preferably defined by hash table entries).
87. As can be seen, the mapping of a spectral value (of frequency domain audio representation 722), or of a more significant bit plane of a spectral value, to a code value (of encoded audio information 712 ), can be performed by spectral value encoding 740 using a mapping rule 742. A state tracker 750 can be configured to track the context state. The status tracker 750 provides information 754 that describes the current context state. Information 754 describing the current context state can preferably take the form of a numeric current context value. A mapping rule picker 760 is configured to select a mapping rule, for example, a cumulative frequency table, which describes a mapping of a spectral value, or of a more significant bit plane of a spectral value, to a value of code. Thus, a mapping rule selector 760 provides the information from mapping rule 742 to the encoding of the spectral value 740. The information from mapping rule 742 can take the form of a mapping rule index value or the cumulative frequency table. selected depending on a mapping rule index value. The mapping rule picker 760 comprises (or at least evaluates) the hash table 752, whose entries define both significant state values between numeric context values and numeric context value limits and ranges, where an index value mapping rule value is individually associated with a numeric context value being a significant state value, and where a common mapping rule index value is associated with different numerical context values being within a range bounded by limits interval. The hash table 762 is evaluated in order to select the mapping rule, that is, in order to provide the information of the mapping rule 742.
88. To summarize the above, audio encoder 700 performs an arithmetic encoding of a frequency domain audio representation provided by the time domain converter in frequency domain. Arithmetic coding is context dependent, so that a mapping rule (for example, the cumulative frequency table) is selected depending on the previously coded spectral values. Thus, the adjacent spectral values in time and / or frequency (or, at least, within a predetermined environment) to each other and / or to the currently encoded spectral value (that is, spectral values within a predetermined environment of the currently spectral value coded) are considered in the arithmetic coding to adjust the probability distribution evaluated by the arithmetic coding. When selecting an appropriate mapping rule, current numerical context values 754 provided by a state tracker 750 are evaluated. As typically the number of different mapping rules is significantly less than the number of possible values of the current numeric context values 754, the mapping rule selector 760 allocates the same mapping rules (described, for example, by an index value mapping rule) to a comparatively large number of different numeric context values. However, there are typically specific spectral configurations (represented by specific numerical context values) in which a particular mapping rule must be associated in order to obtain good coding efficiency.
89. It was observed that the selection of a mapping rule depending on a current numeric context value can be performed with high computational efficiency, particularly if the inputs of a single hash table define both the significant state values and the range limits numerical (current) context values. It has been observed that this mechanism is well adapted to the requirements of the selection of the mapping rule, as there are many cases where a single significant state value (or significant numerical context value) is embedded between a left range of several non-significant state values (in which a common mapping rule is associated) and a right range of several non-significant state values (in which a common mapping rule is associated). Also, the mechanism of using a single hash table, whose inputs define both the significant state values and the limits of numeric (current) context value ranges can efficiently handle different cases, where, for example, there are two adjacent non-significant state values (also referred to as numeric non-significant context values) without a significant state value between them. Particularly high computational efficiency is achieved due to a number of table accesses being kept small. For example, a single iterative table search is sufficient in most realizations to find out if the current numerical context value is equal to any of the significant state values, or in which of the ranges of non-significant state values the current numeric context value remains. Consequently, the number of time and energy consuming table accesses can be kept small. Thus, the mapping rule selector 760, which uses the hash table 762, can be considered as a mapping rule selector particularly efficient in terms of computational complexity, while still providing good coding efficiency (in terms of bit).
90. Further details regarding the derivation of information from mapping rule 742 from the current numerical context value 754 will be described below. Audio decoder according to figure 8
91. Figure 8 shows a schematic block diagram of an audio decoder 800. The audio decoder 800 is configured to receive encoded audio information 810 and to provide, based on this, decoded audio information 812. The audio decoder audio 800 comprises an arithmetic decoder 820 which is configured to provide several spectral values 822 based on an arithmetically encoded representation 821 of the spectral values. The audio decoder 800 also comprises a time domain frequency converter 830 that is configured to receive the decoded spectral values 822 and provide the time domain audio representation 812, which can constitute the decoded audio information, which uses decoded spectral values 822 in order to obtain decoded audio information 812.
92. The arithmetic decoder 820 comprises a spectral value determiner 824, which is configured to map a code value from the arithmetically encoded representation 821 of spectral values to a symbol code representing one or more of the decoded spectral values, or at least one part (for example, a more significant bit plane) of one or more of the decoded spectral values. The spectral value determiner 824 can be configured to perform a mapping depending on a mapping rule, which can be described by mapping rule information 828a. The mapping rule information 828a can, for example, take the form of a mapping rule index value, or the selected cumulative frequency table (selected, for example, depending on a mapping rule index value).
93. The arithmetic decoder 820 is configured to select a mapping rule (for example, the cumulative frequency table) that describes a mapping of code values (described by the arithmetically encoded representation of spectral values 821) into a symbol code (which describes one or more spectral values, or a more significant bit plane thereof) depending on a context state (which can be described by the context state information 826a). The arithmetic decoder 820 is configured to determine the current context state (described by the current numeric context value) depending on several spectral values previously decoded. For this purpose, a status tracker 826 can be used, which receives an information describing the spectral values previously decoded and which provides, based on this, a numerical current context value 826a that describes the current context state.
94. The arithmetic decoder is also configured to evaluate the hash table 829, whose inputs define both significant state numeric values between numeric context values and numeric context value range limits, in order to select the mapping rule, in that a mapping rule index value is individually associated with a numeric context value being a significant state value, and where a common mapping rule index value is associated with different numeric context values being within an interval bounded by interval limits. The evaluation of the hash table 829 can, for example, be performed using a hash table evaluator that can be part of the mapper rule 828 selector. Thus, information from mapping rule 828a, for example, in the form of a value of mapping rule index, is obtained based on the current numerical context value 826a which describes the current context state. The mapping rule selector 828 can, for example, determine the mapping rule index value 828a depending on a result of the evaluation of the hash table 829. Alternatively, an evaluation of the hash table 829 can directly provide the index value mapping rule.
95. Regarding the functionality of the 800 audio signal decoder, it should be noted that the arithmetic decoder 820 is configured to select a mapping rule (for example, the cumulative frequency table) that is, on average, well adapted to spectral values to be decoded, according to the mapping rule is selected depending on the current context state (described, for example, by the current numeric context value), which in turn is determined depending on the various spectral values previously decoded. Thus, statistical dependencies between adjacent spectral values to be coded can be explored. In addition, the arithmetic decoder 820 can be implemented efficiently, with a good trade-off between computational complexity, table size, and coding efficiency, which uses the mapping rule selector 828. By evaluating a (single) hash table 829 , in entries that describe both significant state values and range limits of non-significant state value ranges, a single iterative table search may be sufficient to derive mapping rule information 828a from the current context value numeric 826a. Thus, it is possible to map a comparatively large number of different possible numerical (current) context values into a comparatively small number of different mapping rule index values. Using the hash table 829, as described above, it is possible to explain the observation that, in many cases, a single isolated significant state value (significant context value) is incorporated between a left range of non-significant state values (values of non-significant context) and a right range of non-significant state values (non-significant context values), where a different mapping rule index value is associated with the significant state value (significant context value), when compared to the state values (context values) of the left interval and the state values (context values) of the right interval. However, the use of the hash table 829 is also well suited for situations where the two ranges of numeric state values are immediately adjacent, without a significant state value between them.
96. To conclude, the mapping rule selector 828, which evaluates the hash table 829, brings with it particularly good efficiency when selecting a mapping rule (or providing a mapping rule index value) depending on the context state current (or depending on the current numerical context value that describes the current context state), as the hashing mechanism is well adapted to typical context scenarios in an audio decoder.
97. Further details will be described below. Context Value Hashing Mechanism according to figure 9
98. Next, a context hashing mechanism will be revealed, which can be implemented in the mapping rule picker 760 and / or in the mapping rule picker 828. The hash table 762 and / or the hash table 829 can be used to implement said context hashing mechanism value.
99. Now with reference to figure 9, which shows a hash scenario of the current numerical context value, other details will be described. In the graphical representation of figure 9, an abscissa 910 describes values of the current numerical context value (that is, numerical context values). An ordinate 912 describes mapping rule index values. Markings 914 describe mapping rule index values for numeric non-significant context values (which describe non-significant states). Markings 916 describe the mapping rule index values for “individual” (true) numeric meaningful context values that describe individual (true) meaningful states. Markings 916 describe mapping rule index values for “inappropriate” numerical context values that describe “inappropriate” significant states, where a “inappropriate” significant state is a significant state in which the same mapping rule index value it is associated with one of the adjacent context ranges of numeric non-significant contexts.
100. As can be seen, an hash table entry “ari_hash_m [i1]” describes an individual (true) significant state having a numerical context value of c1. As can be seen, the mapping rule index value mriv1 is associated with the individual (true) significant state having the numerical context value c1. Thus, the numerical context value c1 and the mapping rule index value mriv1 can be described by the hash table entry “ari_hash_m [i1]”. A range 932 of numeric context values is delimited by the numeric context value c1, where the numeric context value c1 does not belong to range 932, so that the largest numeric context value of range 932 is equal to cl - 1. A mapping rule index value of mriv4 (which is different from mriv1) is associated with the numeric context values of the 932 range. The mapping rule index value of mriv4 can, for example, be described by the table entry “ari_lookup_m [i1-1] ”of the additional table“ ari_lookup_m ”.
101. In addition, a mapping rule index value of mriv2 can be associated with numeric context values within a 934 range. A lower limit of range 934 is determined by the numeric context value c1, which is a value significant numeric context, where the numeric context value c1 does not belong to the range 932. Thus, the smallest value in the range 934 is equal to c1 + 1 (assuming the numeric context integer values). Another limit of the interval 934 is determined by the numerical context value c2, where the numerical context value c2 does not belong to the interval 934, so that the largest value in the interval 934 is equal to c2 - 1. The numerical context value c2 it is a value called “improper” numeric context value, which is described by an hash table entry “ari_hash_m [i2]”. For example, the mapping rule index value mriv2 can be associated with the numerical context value c2, so that the numerical context value associated with the significant “inappropriate” numerical context value c2 is equal to the rule value index of mapping associated with interval 934 delimited by the numerical context value c2. In addition, a numeric context value range 936 is also delimited by the numerical context value c2, where the numerical context value c2 does not belong to the range 936, so that the lowest numeric context value in the range 936 is equal to c2 + 1. A mriv3 mapping rule index value, which is typically different from the mriv2 mapping rule index value, is associated with the numeric context values in the 936 range.
102. As can be seen, the mriv4 mapping rule index value, which is associated with the 932 range of numerical context values, can be described by an “ari_lookup_m [i1-1]” entry in the “ari_lookup_m” table, the mapping rule index mriv2, which is associated with the numeric context values of the 934 range, can be described by a table entry “ari_lookup_m [i1]” from table “ari_lookup_m”, and the mapping rule index value mriv3 can be described by a table entry “ari_lookup_m [i2]” from the table “ari_lookup_m”. In the example given here, the index value of the hash table i2, can be greater, by 1, than the index value of the hash table i1.
103. As can be seen from figure 9, the mapping rule selector 760 or the mapping rule selector 828 can receive a current numerical context value 764, 826a, and decide, by evaluating the entries in the “ari_hash_m” table, if the current numeric context value is a significant state value (regardless of whether it is an “individual” significant state value or an “inappropriate” significant state value), or if the current numeric context value within one of the 932 intervals, 934, 936, which are delimited by significant (“individual” or “inappropriate”) state values c1, c2. Both checking whether the current numerical context value is equal to a significant state value c1, c2 and an evaluation of the intervals 932, 934, 936 in which the current numerical context value remains (in the case where the current context value numeric is not equal to a significant state value) can be performed using a single common hash table lookup.
104. In addition, an evaluation of the hash table “ari_hash_m” can be used to obtain an index value from the hash table (for example, i1-1, i1 or i2). Thus, the mapping rule picker 760, 828 can be configured to obtain, by evaluating a single hash table 762, 829 (for example, the hash table "ari_hash_m"), an index value of the hash table (for example, i1- 1, i1 or i2) designating a significant state value (for example, c1 or c2) and / or a range (for example, 932,934,936) and information if the current numeric context value is a significant context value (also designated as a significant state value) or not.
105. In addition, if it is noted in an evaluation of the hash table 762, 829, “ari_hash_m”, that the current numeric context value is not a “significant” context value (or “significant” state value), the value of the hash table index (for example, i1-1, i1 or i2) obtained from a hash table evaluation (“ari_hash_m”) can be used to obtain a mapping rule index value associated with a 932, 934 range, 936 of numeric context values. For example, the index value of the hash table (for example, i1-1, i1, or i2) can be used to designate an additional mapping table entry (for example, “ari_lookup_m”), which describes the index values of mapping rule associated with intervals 932, 934, 936 whose numerical current context value remains.
106. For more details, reference is made to the detailed discussion below of the “arith_get_pk” algorithm (where there are different options for this “arith_get_pk ()” algorithm, examples of which are shown in figures 5e and 5f).
107. In addition, it should be noted that the size of the intervals may differ from case to case. In some cases, a range of numeric context values comprises a single numeric context value. However, in many cases, an interval can comprise several numerical context values. Audio encoder according to figure 10
108. Figure 10 shows a schematic block diagram of an audio encoder 1000 according to an embodiment of the invention. The audio encoder 1000 according to figure 10 is similar to the audio encoder 700 according to figure 7, so that identical signals and means are designated with identical reference numbers in figures 7 and 10.
109. The audio encoder 1000 is configured to receive input audio information 710 and provide, based on it, encoded audio information 712. The audio encoder 1000 comprises a time domain converter in frequency domain with compression power 720, which is configured to provide a frequency domain representation 722 based on a time domain representation of the input audio information 710, so that the frequency domain audio representation 722 comprises a set of values spectral. The audio encoder 1000 also comprises an arithmetic encoder 1030 configured to encode a spectral value (outside the set of spectral values forming the audio representation of frequency domain 722), or a pre-processed version of it, which uses a length password variable to obtain the encoded audio information 712 (which can comprise, for example, several passwords of varying length).
110. The arithmetic encoder 1030 is configured to map a spectral value, or several spectral values, or a bit plane value more significant than a spectral value or several spectral values, to a code value (that is, to a variable length password) depending on a context state. The arithmetic encoder 1030 is configured to select a mapping rule that describes a mapping of a spectral value, or of several spectral values, or of a more significant bit plane of a spectral value or of several spectral values, in a code value depending on a state of context. The arithmetic encoder is configured to determine the current context state depending on several spectral values previously encoded (preferably, but not necessarily adjacent). For this purpose, the arithmetic encoder is configured to modify a numerical representation of a numerical prior context value, which describes a context state associated with one or more previously encoded spectral values (for example, to select a corresponding mapping rule), depending on a context sub-region value, to obtain a numerical representation of a current numeric context value that describes a context state associated with one or more spectral values to be encoded (for example, to select a corresponding mapping rule ).
111. As can be seen, the mapping of a spectral value, or of several spectral values, or of a more significant bit plane of a spectral value or of several spectral values, in a code value can be performed by coding the spectral value 740 that uses a mapping rule described by mapping rule information 742. A state tracker 750 can be configured to track the context state. The state tracker 750 can be configured to modify a numeric representation of a numeric prior context value, which describes a context state associated with a coding of one or more previously coded spectral values, depending on a value of the context subregion. , to obtain a numerical representation of a current numerical context value that describes a context state associated with an encoding of one or more spectral values to be encoded. The modification of the numerical representation of the numerical previous context value can, for example, be carried out by a numeric representation modifier 1052, which receives the numerical previous context value and one or more values from the context sub-region and provides the value of current numerical context. Thus, status tracker 1050 provides information 754 that describes the current context state, for example, in the form of a numeric current context value. A 1060 mapping rule selector can select a mapping rule, for example, the cumulative frequency table, which describes a mapping of a spectral value, or of several spectral values, or of a more significant bit plane of a spectral value or several spectral values, in a code value. Thus, the mapping rule selector 1060 provides the information from mapping rule 742 to spectral coding 740.
112. It should be noted that, in some embodiments, status tracker 1050 may be identical to status tracker 750 or status tracker 826. It should also be noted that the mapping rule selector 1060 may, in some embodiments, be identical to mapping rule picker 760, or mapping rule picker 828.
113. To summarize the above, audio encoder 1000 performs an arithmetic encoding of a frequency domain audio representation provided by the time domain converter in frequency domain. Arithmetic coding is context dependent, so that a mapping rule (for example, the cumulative frequency table) is selected depending on the previously coded spectral values. Thus, the spectral values adjacent in time and / or frequency (or at least within a predetermined environment) to each other and / or to the currently encoded spectral value (i.e., spectral values within a predetermined environment of the currently encoded spectral value ) are considered in the arithmetic coding to adjust the probability distribution evaluated by the arithmetic coding.
114. When determining the current numerical context value, a numerical representation of a previous numeric context value, which describes a context state associated with one or more previously encoded spectral values, is modified depending on a value of the context subregion. , to obtain a numerical representation of a current numerical context value that describes a context state associated with one or more spectral values to be encoded. This approach allows to avoid a complete recalculation of the current numerical context value, whose complete recalculation consumes a significant amount of resources in conventional approaches. A wide variety of possibilities exist for modifying the numerical representation of the numeric pre-context value, including a combination of a resizing of a numeric representation of the numeric pre-context value, an addition of a context sub-region value or a value derived from this for the numerical representation of the numerical previous context value or a processed numerical representation of the numerical previous context value, a replacement of a part of the numerical representation (instead of the entire numerical representation) of the numerical previous context value depending on the value of the context sub-region, and so on. Thus, typically the numerical representation of the current numerical context value is obtained based on the numerical representation of the previous numerical context value and also based on at least one value of the context sub-region, where typically a combination of operations is performed to combine the numeric pre-context value with a context subregion value, such as, for example, two or more operations outside an addition operation, a subtraction operation, a multiplication operation, a division operation, a Boolean-AND operation, Boolean-OR operation, Boolean-NAND operation, Boolean NOR operation, Boolean-negation operation, complementary operation or change operation. Thus, at least a part of the numerical representation of the numerical previous context value is typically kept unchanged (except for an optional change in a different position) by deriving the current numerical context value from the numeric previous context value. In contrast, other parts of the numerical representation of the previous numerical context value are changed depending on one or more values of the context sub-region. Thus, the current numerical context value can be obtained with a comparatively small computational effort, while avoiding a complete recalculation of the current numerical context value.
115. Thus, a significant current numerical context value can be obtained, which is well suited for use by the 1060 mapping rule selector.
116. Consequently, efficient coding can be achieved by keeping the context calculation simple enough. Audio decoder according to figure 11
117. Figure 11 shows a schematic block diagram of an 1100 audio decoder. The 1100 audio decoder is similar to the 800 audio decoder according to figure 8, so that identical signals, media and features are designated with identical reference numbers.
118. The audio decoder 1100 is configured to receive encoded audio information 810 and provide, based on it, decoded audio information 812. The audio decoder 1100 comprises an arithmetic decoder 1120 which is configured to provide various decoded spectral values. 822 based on an arithmetically encoded representation 821 of spectral values. The audio decoder 1100 also comprises a time domain frequency converter 830 that is configured to receive the decoded spectral values 822 and provide the time domain audio representation 812, which can constitute the decoded audio information, which uses decoded spectral values 822 in order to obtain decoded audio information 812.
119. The arithmetic decoder 1120 comprises a spectral value determiner 824, which is configured to map a code value from the arithmetically encoded representation 821 of spectral values to a symbol code representing one or more of the decoded spectral values, or at least one part (for example, a more significant bit plane) of one or more of the decoded spectral values. The spectral value determiner 824 can be configured to perform the mapping depending on a mapping rule, which can be described by mapping rule information 828a. The mapping rule information 828a may, for example, comprise a mapping rule index value, or it may comprise a set of entries selected from the cumulative frequency table.
120. The 1120 arithmetic decoder is configured to select a mapping rule (for example, the cumulative frequency table) that describes a mapping of a code value (described by the arithmetically encoded representation 821 of spectral values) into a symbol code ( which describes one or more spectral values) depending on a context state, the context state of which can be described by the context state information 1126a. The context status information 1126a can take the form of a current numeric context value. The arithmetic decoder 1120 is configured to determine the current context state depending on several previously decoded spectral values 822. For this purpose, a status tracker 1126 can be used, which receives an information describing the previously decoded spectral values. The arithmetic decoder is configured to modify a numerical representation of the previous numerical context value, which describes a context state associated with one or more previously decoded spectral values, depending on a value of the context sub-region, to obtain a numerical representation of a current numeric context value that describes a context state associated with one or more spectral values to be decoded. A modification of the numerical representation of the previous numerical context value can, for example, be carried out by a numeric representation modifier 1127, which is part of the state tracker 1126. Thus, the current context state information 1126a is obtained, for example , in the form of a current numeric context value. Mapping rule selection can be performed by a mapping rule selector 1128, which derives information from mapping rule 828a from current context state information 1126a, and which provides information from mapping rule 828a to the value determiner spectral 824.
121. Regarding the functionality of the 1100 audio signal decoder, it should be noted that the arithmetic decoder 1120 is configured to select a mapping rule (for example, the cumulative frequency table) that is, on average, well adapted to the spectral value to be decoded, according to the mapping rule is selected depending on the current context state, which, in turn, is determined depending on several spectral values previously decoded. Thus, statistical dependencies between adjacent spectral values to be decoded can be explored.
122. In addition, modifying a numeric representation of a previous numerical context value that describes a context state associated with a decoding of one or more previously decoded spectral values, depending on a value of the context sub-region, to obtain a representation numerical value of a current numerical context value that describes a context state associated with a decoding of one or more spectral values to be decoded, it is possible to obtain significant information about the current context state, which is well suited for a mapping of a mapping rule index value, with comparatively small computational effort. Maintaining at least a part of a numeric representation of the numeric pre-context value (possibly a bit-changed or scaled version) while updating another part of the numeric representation of the numeric pre-context value depending on the values of the context subregion that were not considered in the previous numerical context value, but that must be considered in the current numerical context value, a number of operations to derive the current numerical context value can be kept reasonably small. Still, it is possible to explore the fact that the contexts used to decode adjacent spectral values are typically similar or correlated. For example, a context for decoding a first spectral value (or a first plurality of spectral values) is dependent on a first set of previously decoded spectral values. A context for decoding a second spectral value (or a second set of spectral values), which is adjacent to the first spectral value (or the first set of spectral values) can comprise a second set of previously decoded spectral values. As the first spectral value and the second spectral value are assumed to be adjacent (for example, with respect to the associated frequencies), the first set of spectral values, which determines the context for the encoding of the first spectral value, can understand a certain overlap with the second set of spectral values, which determines the context for decoding the second spectral value. Thus, it can be easily understood that the context state for decoding the second spectral value comprises a certain correlation with the context state for decoding the first spectral value. A computational efficiency of the derivation of context, that is, the derivation of the current numerical context value, can be obtained by exploring such correlations. It was observed that the correlation between the context states for a decoding of adjacent spectral values (for example, between the context state described by the previous numeric context value and the context state described by the current numeric context value) can be explored efficiently modifying only those parts of the previous numeric context value that are dependent on the values of the context subregion not considered for the derivation of the previous numerical context state, and deriving the current numeric context value from the numeric previous context value.
123. To conclude, the concepts described here allow for particularly good computational efficiency when deriving the current numerical context value.
124. Other details will be described below. Audio encoder according to figure 12
125. Figure 12 shows a schematic block diagram of an audio encoder, according to an embodiment of the invention. The audio encoder 1200 according to figure 12 is similar to the audio encoder 700 according to figure 7, so that identical means, signals and features are designated with identical reference numbers.
126. Audio encoder 1200 is configured to receive incoming audio information 710 and to provide encoded audio information 712 based on it. Audio encoder 1200 comprises a time domain converter in frequency domain with compression power 720 which is configured to provide a frequency domain audio representation 722 based on a time domain audio representation of the input audio information 710, so that the frequency domain audio representation 722 comprises a set of spectral values. The audio encoder 1200 also comprises an arithmetic encoder 1230 configured to encode a spectral value (outside the set of spectral values that form the audio representation of frequency domain 722), or several spectral values, or a preprocessed version of it, which uses a variable length password to obtain 712 encoded audio information (which can comprise, for example, several variable length passwords).
127. The 1230 arithmetic encoder is configured to map a spectral value, or several spectral values, or a value from a bit plane more significant than a spectral value or from several spectral values, to a code value (that is, a variable length password), depending on a context state. The 1230 arithmetic encoder is configured to select a mapping rule that describes a mapping of a spectral value, or of several spectral values, or of a more significant bit plane of a spectral value or of several spectral values, in a code value , depending on the context state. The arithmetic encoder is configured to determine the current context state depending on several spectral values previously encoded (preferably, but not necessarily, adjacent). For this purpose, the arithmetic encoder is configured to obtain various values of the context sub-region based on previously coded spectral values, to store said values of the context sub-region, and to derive a current numeric context value associated with one or more spectral values to be encoded depending on the values of the stored context subregion. In addition, the arithmetic encoder is configured to calculate the norm of a vector formed by the various spectral values previously encoded, in order to obtain a common value of the context sub-region associated with several spectral values previously encoded.
128. As can be seen, the mapping of a spectral value, or of several spectral values, or of a more significant bit plane of a spectral value or of several spectral values, in a code value can be performed by coding the spectral value 740 that uses a mapping rule described by mapping rule information 742. A state tracker 1250 can be configured to track the context state and can comprise a computer of the value of the context sub region 1252, to calculate the norm of a vector formed by several previously coded spectral values, in order to obtain a common value of the context sub-region associated with several previously coded spectral values. The status tracker 1250 is also preferably configured to determine the current context state depending on a result of said computation of a context sub-region value performed by the computer from the value of the context sub-region 1252. Thus, the status tracker state 1250 provides information 1254, which describes the current context state. A 1260 mapping rule picker can select a mapping rule, for example, the cumulative frequency table, which describes a mapping of a spectral value, or of a more significant bit plane of a spectral value, to a code value . Thus, the mapping rule selector 1260 provides the information from mapping rule 742 to spectral coding 740.
129. To summarize the above, audio encoder 1200 performs an arithmetic encoding of a frequency domain audio representation provided by the time domain converter in frequency domain 720. The arithmetic encoding is context dependent, so that a mapping rule (for example, the cumulative frequency table) is selected depending on previously coded spectral values. Thus, the adjacent spectral values in time and / or frequency (or, at least, within a predetermined environment) to each other and / or to the currently encoded spectral value (that is, spectral values within a predetermined environment of the currently spectral value coded) are considered in the arithmetic coding to adjust the probability distribution evaluated by the arithmetic coding.
130. In order to provide a current numerical context value, a value of the context sub-region associated with several previously encoded spectral values is obtained based on a calculation of a vector norm formed by several previously encoded spectral values. The result of determining the current numerical context value is applied in the selection of the current context state, that is, in the selection of a mapping rule.
131. By calculating the norm of a vector formed by several previously encoded spectral values, significant information describing a part of the context of one or more spectral values to be encoded can be obtained, in which the norm of a previously encoded spectral value vector it can typically be represented with a comparatively small number of bits. Thus, the amount of context information, which needs to be stored for future use in deriving a current numerical context value, can be kept small enough by applying the approach discussed above for calculating the values of the context sub-region. It was observed that the norm of a vector of spectral values previously encoded typically comprises the most significant information regarding the state of the context. In contrast, it has been observed that the signal of said previously encoded spectral values typically comprises a subordinate impact on the state of the context, so that it makes sense to deny the signal of previously decoded spectral values in order to reduce the amount of information to be stored for use future. Still, it was observed that the calculation of a norm for a vector of previously encoded spectral values is a reasonable approach for deriving a value from the context sub-region, as the average effect, which is typically obtained by calculating the norm, leaves the most important information about the substantially unaffected state of context. To summarize, the value of the context subregion computed by the computer of the value of the context sub-region 1252 allows to provide information of the compact context subregion for future storage and reuse, in which the most relevant information about the state of context is preserved instead of reducing the amount of information.
132. Thus, an efficient encoding of the input audio information 710 can be obtained, while maintaining the computational effort and a quantity of data to be stored by the arithmetic encoder 1230 sufficiently small. Audio decoder according to figure 13
133. Figure 13 shows a schematic block diagram of an audio decoder 1300. As the audio decoder 1300 is similar to the audio decoder 800 according to figure 8, and the audio decoder 1100 according to figure 11 , identical means, signs and features are designated as identical numbers.
134. The audio decoder 1300 is configured to receive encoded audio information 810 and to provide, based on it, decoded audio information 812. The audio decoder 1300 comprises an arithmetic decoder 1320 which is configured to provide several decoded spectral values 822 based on an arithmetically encoded representation 821 of spectral values. The audio decoder 1300 also comprises a time domain frequency converter 830 that is configured to receive the decoded spectral values 822 and provide the time domain audio representation 812, which can constitute the decoded audio information, which uses decoded spectral values 822 in order to obtain decoded audio information 812.
135. The arithmetic decoder 1320 comprises a spectral value determiner 824 which is configured to map a code value from the arithmetically encoded representation 821 of spectral values to a symbol code representing one or more of the decoded spectral values, or at least a portion (for example, a more significant bit plane) of one or more of the decoded spectral values. The spectral value determiner 824 can be configured to perform a mapping depending on a mapping rule, which is described by mapping rule information 828a. The mapping rule information 828a can, for example, comprise a mapping rule index value, or a selected set of cumulative frequency table entries.
136. The arithmetic decoder 1320 is configured to select a mapping rule (for example, the cumulative frequency table) that describes a mapping of a code value (described by the arithmetically encoded representation 821 of spectral values) into a symbol code ( which describes one or more spectral values) depending on a context state (which can be described by the context state information 1326a). The arithmetic decoder 1320 is configured to determine the current context state depending on several previously decoded spectral values 822. For this purpose, a state tracker 1326 can be used, which receives an information describing the previously decoded spectral values. The arithmetic decoder is also configured to obtain various values of the context sub-region based on previously decoded spectral values and to store said values of the context sub-region. The arithmetic decoder is configured to derive a current numerical context value associated with one or more spectral values to be decoded depending on the values of the stored context subregion. The arithmetic decoder 1320 is configured to calculate the norm of a vector formed by several spectral values previously decoded, in order to obtain a common value of the context sub-region associated with several spectral values previously decoded.
137. The calculation of the norm of a vector formed by several previously encoded spectral values, in order to obtain a common value of the context sub-region associated with several previously decoded spectral values, can, for example, be performed by the computer of the value of the context sub-region 1327, which is part of state tracker 1326. Thus, current context state information 1326a is obtained based on the values of the context sub-region, where state tracker 1326 preferably provides a value current numeric context associated with one or more spectral values to be decoded depending on the values of the stored context subregion. The selection of the mapping rules can be performed by a mapping rule selector 1328, which derives information from mapping rule 828a from current context state information 1326a, and which provides information from mapping rule 828a to the value determiner spectral 824.
138. Regarding the functionality of the 1300 audio signal decoder, it should be noted that the arithmetic decoder 1320 is configured to select a mapping rule (for example, the cumulative frequency table) that is, on average, well adapted to the spectral value to be decoded, according to the mapping rule is selected depending on the current context state, which, in turn, is determined depending on several spectral values previously decoded. Thus, the statistical dependencies between adjacent spectral values to be decoded can be explored.
139. However, it was observed that it is efficient, in terms of memory usage, to store values of the context sub-region, which are based on the calculation of a norm of a vector formed in several spectral values previously decoded, for future use in determination of the numerical context value. It was also observed that such values of the context sub-region still comprise the most relevant context information. Thus, the concept used by the 1326 status tracker is a good compromise between coding efficiency, computational efficiency and storage efficiency.
140. Other details will be described below. Audio encoder according to figure 1
141. In the following, an audio encoder, according to an embodiment of the present invention, will be described. Figure 1 shows a schematic block diagram of such an audio encoder 100.
142. The audio encoder 100 is configured to receive input audio information 110 and to provide, on the basis of this, a bit stream 112, which constitutes encoded audio information. The audio encoder 100 optionally comprises a preprocessor 120, which is configured to receive the incoming audio information 110 and to provide, based thereon, a preprocessed input audio information 110a. The audio encoder 100 also comprises a time domain signal transformer in frequency domain with energy compression 130, which is also referred to as a signal converter. The signal converter 130 is configured to receive the incoming audio information 110, 110a and to provide, on the basis of this, audio information of frequency domain 132, which preferably takes the form of a set of spectral values. For example, signal transformer 130 can be configured to receive a structure of the incoming audio information 110, 110a (for example, a block of time domain samples) and provide a set of spectral values representing the audio content of the respective audio structure. In addition, signal transformer 130 can be configured to receive a number of subsequent audio structures, overlapping or non-overlapping of incoming audio information 110, 110a and providing, based on this, a time frequency domain audio representation , which comprises a sequence of subsequent sets of spectral values, a set of spectral values associated with each structure.
143. The time domain signal transformer in energy-compacted frequency domain 130 may comprise an energy-compacted filter bank, which provides spectral values associated with different frequency ranges, overlapping or non-overlapping. For example, signal transformer 130 may comprise a windowing MDCT transformer 130a, which is configured to window input audio information 110, 110a (or its structure) using a transformation window and to perform a transformation modified discrete cosine of the window input audio information 110, 110a (or the window structure thereof). Thus, the frequency domain audio representation 132 may comprise a set of, for example, 1024 spectral values in the form of MDCT coefficients associated with a structure of the incoming audio information.
144. Audio encoder 100 may optionally further comprise a spectral post-processor 140, which is configured to receive frequency domain audio representation 132 and provide, based on this, post frequency domain audio representation -processed 142. Spectral post-processor 140 can, for example, be configured to perform a form of temporal noise / or a long-term forecast and / or any other spectral post-processing known in the art. The audio encoder optionally further comprises a frequency multiplier / quantifier 150, which is configured to receive the audio representation of frequency domain 132 or the post-processed version 142 thereof and provide an audio representation of scaled frequency domain and quantized 152.
145. The audio encoder 100 also optionally comprises a psychoacoustic model 160 processor, which is configured to receive the incoming audio information 110 (or the post-processed version 110a thereof) and provide, based on this, information control module, which can be used for the control of the time domain signal transformer in frequency domain with energy compaction 130, for the control of the optional spectral post-processor 140 and / or for the control of the frequency multiplier / optional quantifier 150. For example, the psychoacoustic model processor 160 can be configured to analyze input audio information, to determine which components of input audio information 110, 110a are particularly important for human perception of audio content and which components of the input audio information 110, 110a are less important for the perception of the audio content. Thus, the processor of the psychoacoustic model 160 can provide control information, which is used by the audio encoder 100 in order to adjust the scale of the audio representation of frequency domain 132, 142 by the frequency multiplier / quantifier 150 and / or a quantization resolution applied by the frequency multiplier / quantifier 150. Consequently, perceptually important scale factor ranges (ie groups of adjacent spectral values that are particularly important for human perception of audio content) are scaled with a large scaled and quantized with comparatively high resolution, while perceptually less important scale factor ranges (ie, groups of adjacent spectral values) are scaled with a comparatively smaller scale factor and quantized with a comparatively lower quantization resolution. Thus, the scaled spectral values of perceptually more important frequencies are typically significantly higher than the spectral values of perceptually less important frequencies.
146. The audio encoder also comprises an arithmetic encoder 170, which is configured to receive the scaled and quantized version 152 of the audio representation of frequency domain 132 (or, alternatively, the postprocessed version 142 of the audio representation frequency domain 132, or even the frequency domain audio representation 132 itself) and provide arithmetic password information 172a based thereon, so that the arithmetic password information represents the frequency domain audio representation 152.
147. Audio encoder 100 also comprises a bit stream payload formatter 190, which is configured to receive arithmetic password information 172a. The bitstream payload formatter 190 is also typically configured to receive additional information, such as, for example, the scaling factor information that describes which scaling factors were applied by the frequency multiplier / quantifier 150. In addition, the formatting bitstream payload 190 can be configured to receive other control information. The bitstream payload formatter 190 is configured to provide bitstream 112 based on the information received by assembling the bitstream according to a desired bitstream syntax, which will be discussed below.
148. In the following, details regarding the arithmetic encoder 170 will be described. The arithmetic encoder 170 is configured to receive various postprocessed and scaled and quantized spectral values from the audio representation of frequency domain 132. The arithmetic encoder comprises an extractor of the most significant bit plane 174, or even two spectral values, which is configured to extract a more significant bit plane m from a spectral value. It should be noted here that the most significant bit plane can comprise one or more bits (for example, two or three bits), which are the most significant bits of the spectral value. Thus, the most significant bit plane extractor 174 provides a value of the most significant bit plane 176 with a spectral value.
149. Alternatively, however, the extractor of the most significant bit plane 174 may provide a combined value of the most significant bit plane m which combines the most significant bit plane of several spectral values (for example, of spectral values a and b) . The most significant bit plane of the spectral value a is designated with m. Alternatively, the combined value of the most significant bit plane of several spectral values a, b is designated with m.
150. The arithmetic encoder 170 also comprises a first password determinator 180, which is configured to determine an arithmetic password acod_m [ki] [m] representing the most significant bit plane value m. Optionally, password determinator 180 can also provide one or more escape passwords (also referred to here as “ARITH_ESCAPE”) indicating, for example, how many less significant bit planes are available (and, consequently, indicating the numerical weight of the most significant bit). The first password determinator 180 can be configured to provide the password associated with a value of the most significant bit plane using the selected cumulative frequency table having (or being referenced by) an index of the pki cumulative frequency table.
151. In order to determine which cumulative frequency table to select, the arithmetic encoder preferably comprises a state tracker 182, which is configured to track the state of the arithmetic encoder, for example, by observing which spectral values have been previously encoded. The status tracker 182 consequently provides status information 184, for example, a state value designated with "s" or "t" or "c". The arithmetic encoder 170 also comprises a cumulative frequency table selector 186, which is configured to receive status information 184 and provide information 188 that describes the selected cumulative frequency table to password determinator 180. For example, the cumulative frequency table 186 can provide an index of the “pki” cumulative frequency table that describes which cumulative frequency table, out of a set of 96 cumulative frequency tables, is selected for use by the password determiner. Alternatively, the cumulative frequency table selector 186 may provide the entire selected cumulative frequency table or a sub-table to the password determiner. Thus, password determinator 180 can use the selected cumulative frequency table or sub-table to provide the password acod_m [ki] [m] of the most significant bit plane value m, so that the current password acod_m [ki ] [m] which encodes the value of the most significant bit plane m is dependent on the value of m and the index of the cumulative frequency table pki, and consequently on the current status information 184. Further details regarding the encoding process and the password format obtained will be described below.
152. It should be noted, however, that in some embodiments, status tracker 182 may be identical to, or take on the functionality of, state tracker 750, status tracker 1050 or status tracker 1250. It should also be noted that the cumulative frequency table picker 186 may, in some embodiments, be identical to, or take on functionality from, the mapping rule picker 760, the mapping rule picker 1060, or the mapping rule picker 1260. In addition in addition, the first password determinator 180 may, in some embodiments, be identical to, or take on the functionality of, the encoding of the spectral value 740.
153. Arithmetic encoder 170 further comprises a less significant bit plane extractor 189a, which is configured to extract one or more less significant bit planes from scaled and quantized frequency domain audio representation 152, if one or more of the values spectral values to be encoded exceed the range of values that can be encoded using the most significant bit plane only. The least significant bit planes can comprise one or more bits, as desired. Thus, the least significant bit plane extractor 189a provides less significant bit plane information 189b. The arithmetic encoder 170 also comprises a second password determiner 189c, which is configured to receive information from the least significant bit plane 189d and provide, based on this, 0, 1 or more passwords "acod_r" representing the content of 0, 1 or more less significant bit planes. The second password determiner 189c can be configured to apply an arithmetic encryption algorithm or any other encryption algorithm in order to derive the passwords of the least significant bit plane "acod_r" from the information of the least significant bit plane 189b.
154. It should be noted here that the number of less significant bit planes can vary depending on the value of the scaled and quantized spectral values 152, so that there can be no less significant bit plan if the scaled and quantized spectral value to be encoded it is comparatively small, so that it can have a less significant bit plane if the current scaled and quantized spectral value to be encoded is in the middle range and so that it can have more than a less significant bit plane if the scaled spectral value and quantized to be encoded has a comparatively large value.
155. To summarize the above, the arithmetic encoder 170 is configured to encode scaled and quantized spectral values, which are described by information 152, which uses a hierarchical encoding process. The most significant bit plane (which comprises, for example, one, two or three bits per spectral value) of one or more spectral values, is encoded to obtain an arithmetic password “acod_m [ki] [m]” from a value of most significant bit plane m. One or more less significant bit planes (each of the less significant bit planes comprising, for example, one, two or three bits) of one or more spectral values are encoded to obtain one or more "acod_r" passwords. When encoding the most significant bit plane, the value of the most significant bit plane is mapped to a password acod_m [ki] [m]. For this purpose, 96 different cumulative frequency tables are available for coding the m-value depending on an arithmetic encoder state 170, that is, depending on previously encoded spectral values. Thus, the password “acod_m [ki] [m]” is obtained. In addition, one or more “acod_r” passwords are provided and included in the bit stream if one or more less significant bit planes are present. REDEFINITION DESCRIPTION
156. Audio encoder 100 can optionally be configured to decide whether an improvement in bit rate can be obtained by redefining the context, for example, by setting the state index to a default value. Thus, audio encoder 100 can be configured to provide reset information (for example, called “arith_reset_flag”) indicating whether the context for arithmetic encoding is reset, and also indicating whether the context for arithmetic decoding in a corresponding decoder must be redefined.
157. Details regarding the bitstream format and applied cumulative frequency tables will be discussed below. Audio decoder according to figure 2
158. In the following, an audio decoder, according to an embodiment of the invention, will be described. Figure 2 shows a schematic block diagram of such an audio decoder 200.
159. The audio decoder 200 is configured to receive a bit stream 210, which represents encoded audio information and which may be identical to the bit stream 112 provided by the audio encoder 100. The audio decoder 200 provides information of decoded audio 212 based on bit stream 210.
160. The audio decoder 200 comprises an optional bit stream payload deformator 220, which is configured to receive bit stream 210 and to extract from bit stream 210 a coded representation of frequency domain audio 222. For example , the bitstream payload deformator 220 can be configured to extract arithmetically decoded spectral data from the bitstream 210, for example, an arithmetic password “acod_m [ki] [m]” that represents the value of the most bit plane significant m of a spectral value a, or of several spectral values a, b, and a password “acod_r” that represents a bit plane content less than the spectral value a, or of several spectral values a, b, of the representation frequency domain audio. Thus, the audio coded representation of frequency domain 222 constitutes (or comprises) an arithmetically encoded representation of spectral values. The bitstream payload deformator 220 is further configured to extract additional bitstream control information, which is not shown in Figure 2. In addition, the bitstream payload deformator is optionally configured to extract from the stream bit 210, a reset information of state 224, which is also designated as arithmetic reset flag or “arith_reset_flag”.
161. The audio decoder 200 comprises an arithmetic decoder 230, which is also referred to as a "silent spectral decoder". The arithmetic decoder 230 is configured to receive the encoded audio representation of frequency domain 220 and, optionally, the status reset information 224. The arithmetic decoder 230 is also configured to provide a decoded audio representation of frequency domain 232, which can comprise a decoded representation of spectral values. For example, the decoded representation of frequency domain audio 232 may comprise a decoded representation of spectral values, which are described by the coded representation of frequency domain audio 220.
162. The audio decoder 200 also comprises an optional reverse frequency quantizer / multiplier 240, which is configured to receive the decoded audio representation of the frequency domain 232 and to provide, on the basis of this, an audio representation of the frequency domain quantized and resized 242.
163. The audio decoder 200 further comprises an optional spectral preprocessor 250, which is configured to receive the audio representation of the inversely quantized and scaled frequency domain 242 and to provide, based on this, a preprocessed version 252 of the representation frequency domain audio inversely quantized and scaled 242. The audio decoder 200 also comprises a frequency domain signal transformer in time domain 260, which is also referred to as a "signal converter". Signal transformer 260 is configured to receive the preprocessed version 252 of the inversely quantized and scaled frequency domain audio representation 242 (or, alternatively, the inversely quantized and scaled frequency domain audio representation 242 or the decoded audio representation of frequency domain 232) and provide, based thereon, a time domain representation 262 of audio information. The time domain frequency signal transformer 260 may, for example, comprise a transformer to perform a reverse modified discrete cosine transformation (IMDCT) and an appropriate windowing (as well as other auxiliary features, such as, for example, a overlap and addition) ...
164. The audio decoder 200 may further comprise an optional time domain postprocessor 270, which is configured to receive the time domain representation 262 of the audio information and to obtain the decoded audio information 212 using a post - time domain processing. However, if post-processing is omitted, the time domain representation 262 can be identical to the decoded audio information 212.
165. It should be noted here that the inverse frequency quantizer / multiplier 240, the spectral preprocessor 250, the time domain frequency signal transformer 260 and the time domain post processor 270 can be controlled depending of control information, which is extracted from bit stream 210 by bit stream payload deformator 220.
166. To summarize all the functionality of the audio decoder 200, a decoded audio representation of frequency domain 232, for example, a set of spectral values associated with an audio structure of the encoded audio information, can be obtained based on the coded representation of frequency domain 222 using the arithmetic decoder 230. Subsequently, the set of, for example, 1024 spectral values, which can be MDCT coefficients, is inversely quantized, scaled and pre-processed. Thus, a set of spectral values pre-processed spectrally inversely quantized and scaled (for example, 1024 MDCT coefficients) is obtained. Subsequently, a time domain representation of an audio structure is derived from the spectral preprocessed set, inversely quantized and scaled of frequency domain values (for example, MDCT coefficients). Thus, a time domain representation of an audio structure is obtained. The time domain representation of a given audio structure can be combined with the time domain representations of previous and / or subsequent audio structures. For example, an overlap and addition between the time domain representations of subsequent audio structures can be performed in order to smooth the transactions between the time domain representations of the adjacent audio structures and in order to obtain an aliasing override. For details regarding the reconstruction of the decoded audio information 212 based on the decoded audio representation of the time frequency domain 232, reference is made, for example, to the International Standard ISO / IEC 14496-3, part 3, subpart 4 where a detailed discussion is given. However, other more elaborate overlapping and aliasing override schemes can be used.
167. In the following, some details regarding the arithmetic decoder 230 will be described. The arithmetic decoder 230 comprises a more significant bit plane determiner 284, which is configured to receive the acod_m [ki] [m] arithmetic password that describes the value of the most significant bit plane m. The most significant bit plane determiner 284 can be configured to use the cumulative frequency table outside a set comprising several 96 cumulative frequency tables to derive the value of the most significant bit plane m from the arithmetic password “acod_m [ki] [m] ”.
168. The most significant bit plane determiner 284 is configured to derive values 286 from a more significant bit plane from one or more spectral values based on the password acod_m. The arithmetic decoder 230 further comprises a less significant bit plane determiner 288, which is configured to receive one or more "acod_r" passwords representing one or more less significant bit planes of a spectral value. Thus, the least significant bit plane determiner 288 is configured to provide decoded values 290 of one or more less significant bit planes. The audio decoder 200 also comprises a bit plane combiner 292, which is configured to receive the decoded values 286 of the most significant bit plane of one or more spectral values and the decoded values 290 of one or more less significant bit planes. spectral values if such less significant bit planes are available for current spectral values. Thus, the bit plane combiner 292 provides decoded spectral values, which are part of the decoded audio representation of frequency domain 232. Naturally, the arithmetic decoder 230 is typically configured to provide several spectral values in order to obtain a complete set of decoded spectral values associated with a current structure of the audio content.
169. The arithmetic decoder 230 further comprises a cumulative frequency table selector 296, which is configured to select one of 96 cumulative frequency tables depending on a state index 298 that describes a state of the arithmetic decoder. The arithmetic decoder 230 further comprises a state tracker 299, which is configured to track a state of the arithmetic decoder depending on the previously decoded spectral values. The status information can optionally be reset to a standard status information in response to the status reset information 224. Thus, the cumulative frequency table selector 296 is configured to provide an index (for example, pki) of the frequency table selected cumulative frequency, or the selected cumulative frequency table or the sub-table itself, for application in decoding the most significant bit plane value m depending on the password “acod_m”.
170. To summarize the functionality of the audio decoder 200, the audio decoder 200 is configured to receive an efficiently encoded frequency domain audio representation of bit rate 222 and to obtain a decoded frequency domain audio representation in this. In the arithmetic decoder 230, which is used to obtain the decoded representation of frequency domain audio 232 based on the encoded representation of frequency domain audio 222, a probability of different combinations of values from the most significant bit plane of adjacent spectral values is explored using an arithmetic decoder 280, which is configured to apply the cumulative frequency table. In other words, statistical dependencies between spectral values are explored by selecting different cumulative frequency tables out of a set comprising 96 different cumulative frequency tables depending on a state index 298, which is obtained by looking at the previously calculated decoded spectral values.
171. It should be noted that status tracker 299 can be identical to, or can take the functionality of, status tracker 826, status tracker 1126, or status tracker 1326. The cumulative frequency table selector 296 can be identical to or can take functionality, from the mapping rule picker 828, from the mapping rule picker 1128, or from the mapping rule picker 1328. The most significant bit plane determiner 284 can be identical to, or can take the functionality of the spectral value determiner 824. Overview of the silent spectral encoding tool
172. In the following, details regarding the encoding and decoding of the algorithm, which is performed, for example, by the arithmetic encoder 170 and the arithmetic decoder 230, will be explained.
173. Focus should be placed on the description of the algorithm decoding. It should be noted, however, that an encoding of the corresponding algorithm can be performed according to the teachings of decoding the algorithm, in which mappings between encoded and decoded spectral values are inverse, and in which the calculation of the mapping rule index value it is substantially identical. In an encoder, encoded spectral values take the place of decoded spectral values. In addition, the spectral values to be encoded take the place of the spectral values to be decoded.
174. It should be noted that decoding, which will be discussed below, is used to allow the so-called “silent spectral coding” of scaled and quantized spectral values typically post-processed. Silent spectral coding is used in an audio coding / decoding concept (or any other coding / decoding concept) to further reduce the redundancy of the quantized spectrum, which is achieved, for example, by a time domain transformer in frequency domain with energy compaction. The spectral scheme of silent coding, which is used in the realizations of the invention, is based on an arithmetic coding with a dynamically adapted context.
175. In some embodiments, according to the invention, the spectral scheme of silent coding is based on 2 tuples, that is, two close spectral coefficients are combined. Each double tuple is divided into the sign, the most significant bitwise plane, and the remaining least significant bit planes. The silent coding for the most significant bitwise plane m uses context-dependent cumulative frequency tables derived from four previously decoded double tuples. The silent coding is fed by the quantized spectral values and uses context-dependent cumulative frequency tables derived from four previously double decoded tuples. Here, close in time and frequency is considered, as shown in figure 4. The cumulative frequency tables (which will be explained below) are then used by the arithmetic encoder to generate a variable length binary code (and by the arithmetic decoder to derive decoded values variable length binary code).
176. For example, arithmetic encoder 170 produces a binary code for a given set of symbols and their respective probabilities (that is, depending on the respective probabilities). The binary code is generated by mapping a probability range, where the set of symbols is in a password.
177. The least significant bit plane remaining encoding uses a single cumulative frequency table. Cumulative frequencies correspond, for example, to a uniform distribution of symbols that occur in the least significant bit planes, that is, it is expected that there is the same probability that a 0 or a 1 occurs in the least significant bit planes.
178. Next, another brief overview of the silent spectral coding tool will be given. Silent spectral coding is used to further reduce the redundancy of the quantized spectrum. The spectral scheme of silent coding is based on an arithmetic coding, with a dynamically adapted context. The silent coding is fed by the quantized spectral values and uses the context-dependent cumulative frequency tables derived from, for example, four next double tuples previously decoded from spectral values. Here, next, in time and frequency, it is considered as shown in figure 4. The cumulative frequency tables are then used by the arithmetic encoder to generate a variable length binary code.
179. The arithmetic encoder produces a binary code for a given set of symbols and their respective probabilities. The binary code is generated by mapping a probability range, where the set of symbols remains, in a password. Decoding process 11.1 Overview of the decoding process
180. Next, an overview of the process of encoding a spectral value will be presented, referring to figure 3, which shows a representation of the pseudo-program code of the decoding process of several spectral values.
181. The process of decoding several spectral values comprises a 310 initialization of a context. The context initialization 310 comprises a derivation of the current context from a previous context, which uses the function "arith_map_context (N, arith_reset_flag)". Deriving the current context from a previous context can selectively comprise a redefinition of the context. Redefining the context and deriving the current context from a previous context will be discussed below.
182. The decoding of several spectral values also comprises an iteration of a decoding of the spectral value 312 and a context update 313, whose context update 313 is performed by the function “arith_update_context (i, a, b)” which is described below. The decoding of the spectral value 312 and the context update 312 are repeated lg / 2 times, where lg / 2 indicates the number of 2 tuples of spectral values to be decoded (for example, for an audio structure), unless the symbol called “ARITH_STOP” is detected. In addition, the decoding of a set of spectral values lg also comprises a decoding of signals 314 and a finishing step 315.
183. Decoding 312 of a spectral value tuple comprises a calculation of the context value 312a, a decoding of the most significant bit plane 312b, a detection of the arithmetic stop symbol 312c, an addition of the least significant bit plane 312d, and an update to the 312e array.
184. The calculation of state value 312a comprises a call to the function “arith_get_context (c, i, N)” as shown, for example, in figure 5c or 5d. Thus, a current numeric context (state) value c is provided as a return value of the function called the function "arith_get_context (c, i, N)". As can be seen, the numeric previous context value (also known as “c”), which serves as an input variable in the function “arith_get_context (c, i, N)”, is updated to obtain, as a return value , the current numeric context value c.
185. The decoding of the most significant bit plane 312b comprises an iterative execution of an algorithm decoding 312ba, and a derivation 312bb of values a, b of the result value m of the algorithm 312ba. In preparing the 312ba algorithm, the variable lev is initialized to zero. The 312ba algorithm is repeated, until an “interrupt” instruction (or condition) is reached. The 312ba algorithm comprises a calculation of a “pki” state index (which also serves as an index of the cumulative frequency table) depending on the current numerical context value c, and also depending on the “esc_nb” level value using the function “Arith_get_pk ()”, which is discussed below (and achievements of these are shown, for example, in figures. 5e and 5f). The 312ba algorithm also comprises the selection of the cumulative frequency table depending on the state index “pki”, which is returned by the call of the function “arith_get_pk”, in which a variable “cum_freq” can be defined to a starting address of one of the 96 cumulative frequency tables (or sub-tables) depending on the “pki” status index. A variable “cfl” can also be initialized to a length of the selected cumulative frequency table (or a sub-table), which is, for example, equal to a number of symbols in the alphabet, that is, the number of different values that can be decoded. The length of all cumulative frequency tables (or sub-tables) from “ari_cf_m [ki = 0] [17]” to “ari_cf_m [ki = 95] [17]” available for decoding the bit plane value plus significant m is 17, as 16 different values of the most significant bit plane and an escape symbol (“ARITH_ESCAPE”) can be decoded.
186. Subsequently, a more significant bit plane value m can be obtained by executing the function “arith_decode ()”, taking into account the selected cumulative frequency table (described by the variable “cum_freq” and the variable “cfl”). By deriving the value of the most significant bit plane m, the bits called “acod_m” of bit stream 210 can be evaluated (see, for example, figure 6g or figure 6h).
187. The 312ba algorithm also comprises verifying whether the value of the most significant bit plane m equals an escape symbol “ARITH_ESCAPE”, or not. If the value of the most significant bit plane m is not equal to the arithmetic escape symbol, the 312ba algorithm is aborted (“interrupted” condition) and the remaining instructions of the 312ba algorithm are then skipped. Thus, the execution of the process is continued with the definition of the value b and the value a in step 312bb. In contrast, if the value of the most significant bit plane decoded m is identical to the arithmetic escape symbol, or "ARITH_ESCAPE", the level value "lev" is increased by one. The level value “esc_nb” is defined to be equal to the level value “lev”, unless the variable “lev” is greater than seven, in which case, the variable “esc_nb” is defined to be equal to seven. As mentioned, the 312ba algorithm is then repeated until the value of the most significant bit plane decoded m is different from the arithmetic escape symbol, in which a modified context is used (because of the input parameter of the function “arith_get_pk ()” be adapted depending on the value of the variable “esc_nb”).
188. As soon as the most significant bit plane is decoded using period execution or the iterative execution of the 312ba algorithm, that is, a value of the most significant bit plane m other than the arithmetic escape symbol has been decoded, the value variable spectral “b” is defined to be equal to several (for example, 2) most significant bits of the value of the most significant bit plane m, and the spectral value variable “a” is defined (for example, 2) in the least significant value of the most significant bit plane value m. Details regarding this feature can be seen, for example, in reference number 312bb.
189. Subsequently, it is checked in step 312c, whether an arithmetic stop symbol is present. This is the case if the value of the most significant bit plane m is equal to zero and the variable “lev” is greater than zero. Thus, an arithmetic stop condition is signaled by an “unusual” condition, in which the value of the most significant bit plane m is equal to zero, while the variable “lev” indicates that an increased numerical weight is associated with the value of the plane most significant bit m. In other words, an arithmetic stop condition is detected if the bit stream indicates that an increased numeric weight, greater than a minimum numeric weight, must be given to a more significant bit plane value that is equal to zero, which is a condition that does not occur in a normal coding situation. In other words, an arithmetic stop condition is signaled if an encoded arithmetic escape symbol is followed by a value of the most significant encoded bit plane of 0.
190. After an evaluation if there is an arithmetic stop condition, which is performed in step 212c, the least significant bit planes are obtained, for example, as shown in reference number 212d in figure 3. For each bit plane less significant, two binary values are decoded. One of the binary values is associated with variable a (or the first spectral value of a tuple of spectral values) and one of the binary values is associated with variable b (or a second spectral value of a tuple of spectral values). A number of less significant bit planes is designated by the variable lev.
191. When decoding one or more less significant bit planes (if any) an 212da algorithm is performed iteratively, in which a number of executions of the 212da algorithm are determined by the “lev” variable. It should be noted here that the first iteration of the 212da algorithm is performed based on the values of the variables a, b as defined in step 212bb. Other iterations of the 212da algorithm must be performed based on the values of the updated variable of variable a, b.
192. At the beginning of an iteration, a table of cumulative frequencies is selected. Subsequently, an arithmetic decoding is performed to obtain a value of a variable r, where the value of variable r describes several less significant bits, for example, a less significant bit associated with variable a and a less significant bit associated with variable b. The “ARITH_DECODE” function is used to obtain the value r, where the cumulative frequency table “arith_cf_r” is used for arithmetic decoding.
193. Subsequently, the values of variables a and b are updated. For this purpose, variable a is changed to the left by a bit, and the least significant bit of the changed variable a is set to the value defined by the least significant bit of the value r. The variable b is changed to the left by a bit, and the least significant bit of the changed variable b is set to the value defined by bit 1 of the variable r, where bit 1 of the variable r has a numerical weight of 2 in the binary representation of the variable r. The 412ba algorithm is then repeated until all the least significant bits are decoded.
194. After the decoding of the least significant bit planes, an “x_ac_dec” matrix is updated in which the values of the variables a, b are stored in the entries of said matrix having indexes of the matrix 2 * i and 2 * i + 1.
195. Subsequently, the context state is updated by calling the function “arith_update_context (i, a, b)”, details that will be explained below with reference to figure 5g.
196. Subsequent to the context state update, which is performed in step 313, algorithms 312 and 313 are repeated, until the execution variable i reaches the value of lg / 2 or an arithmetic stop condition is detected.
197. Subsequently, an “arith_finish ()” finishing algorithm is performed, as can be seen in reference number 315. Details of the “arith_finish ()” finishing algorithm will be described below with reference to figure 5m.
198. Subsequent to the finishing algorithm 315, the signals of the spectral values are decoded using the algorithm 314. As can be seen, the signals of the spectral values that are different from zero are individually coded. In the algorithm 314, the signals are read for all spectral values having indexes i between i = 0 and i = lg-1 that are not zero. For each non-zero spectral value having an index of the spectral value i between i = 0 and i = lg-1, a value (typically a single bit) s is read from the bit stream. If the value of s, which is read from the bit stream is equal to 1, the signal of said spectral value is inverted. For this purpose, access is made to the “x_ac_dec” matrix, to determine whether the spectral value having the index i is equal to zero and to update the sign of the decoded spectral values. However, it should be noted that the signals of variables a, b are not changed in signal decoding 314.
199. Performing the finishing algorithm 315 before decoding signals 314, it is possible to reset all necessary bins after an ARITH_STOP symbol.
200. It should be noted here that the concept for obtaining the values of the least significant bit planes is not of particular relevance in some embodiments according to the present invention. In some embodiments, the decoding of any less significant bit planes can be omitted. Alternatively, different decoding algorithms can be used for this purpose. 11.2 Decoding order according to figure 4
201. In the following, the order of decoding the spectral values will be described.
202. The quantized spectral coefficients “x_ac_dec []” are silently encoded and transmitted (for example, in the bit stream) starting from the coefficient with the lowest frequency and continuing until the coefficient with the highest frequency.
203. Consequently, the quantized spectral coefficients “x_ac_dec []” are silently coded starting from the coefficient with the lowest frequency and continuing to the coefficient with the highest frequency. The quantized spectral coefficients are decoded by groups of two successive coefficients (for example, adjacent in frequency) a and b joining in a double tuple (a, b) (also known as {a, b}). It should be noted here that the quantized spectral coefficients are sometimes referred to as “qdec”.
204. The “x_ac_dec []” decoded coefficients for a frequency domain mode (for example, decoded coefficients for advanced audio coding, for example, obtained using a modified discrete cosine transformation, as discussed in ISO / IEC 14496, part 3, subpart 4) are then stored in an “x_ac_quant [g] [win] [sfb] [bin]” array. The order in which passwords are silently encrypted is such that when they are decoded in the order received and stored in the matrix, “bin” is the index that increases most rapidly, and “g” is the index that increases most slowly. Within a password, the decryption order is a, b.
205. The decoded coefficients “x_ac_dec []” for transformation encoded excitation (TCX) are stored, for example, directly in an “x_tcx_invquant [win] [bin]” matrix, and an order of transmission of the silent coding password is so that when they are decoded in the order received and stored in the matrix “bin” is the index that increases most quickly, and “win” is the index that increases most slowly. Within a password, a decryption order is a, b. In other words, if the spectral values describe an encoded excitation by transforming the linear prediction filter of a speech encoder, the spectral values a, b are associated with the adjacent and increasing frequencies of the encoded excitation by transformation. The spectral coefficients associated with a lower frequency are typically encoded and decoded before a spectral coefficient associated with a higher frequency.
206. Notably, the audio decoder 200 can be configured to apply the decoded representation of frequency domain 232, which is provided by the arithmetic decoder 230, for a “direct” generation of a representation of the time domain audio signal it uses a transformation of the frequency domain signal into a time domain and for an “indirect” provision of a representation of the audio domain signal using a frequency domain decoder in time domain and a linear forecast filter excited by output of the frequency domain signal transformer in time domain.
207. In other words, the arithmetic decoder, the functionality that is discussed here in detail, is well suited for spectral decoding values of a time frequency domain representation of audio content encoded in the frequency domain, and for provision of a time frequency domain representation of a stimulus signal for a linear prediction filter adapted to decode (or synthesize) a speech signal encoded in the linear prediction domain. Thus, the arithmetic decoder is well suited for use in an audio decoder that can handle frequency domain encoded audio content and linear predictive frequency domain encoded audio content (transformation-encoded excitation mode of forecast domain linear). 11.3 Initialization of context according to figures 5a and 5b
208. In the following, context initialization (also referred to as a “context mapping”), which is carried out in step 310, will be described.
209. Context initialization comprises a mapping between a previous context and a current context according to the “arith_map_context ()” algorithm, a first example of what is shown in figure 5a and a second example of what is shown in figure 5b.
210. As can be seen, the current context is stored in a global variable “q [2] [n_context]” which takes the form of a matrix having a first dimension of 2 and a second dimension of “n_context”. A previous context can optionally (but not necessarily) be stored in a variable “qs [n_context]” that takes the form of the table having a dimension of “n_context” (if used).
211. Referring to the example algorithm “arith_map_context” in figure 5a, the input variable N describes a length of a current window and the input variable “arith_reset_flag” indicates whether the context should be redefined. In addition, the global variable “previous_N” describes a length of a previous window. It should be noted here that typically a number of spectral values associated with a window is at least approximately equal to half a length of said window in terms of time domain samples. Furthermore, it should be noted that a number of 2 tuples of spectral values is, therefore, at least approximately equal to a quarter of a length of said window in terms of time domain samples.
212. Using the example in figure 5a as a reference, the context mapping can be performed according to the “arith_map_context ()” algorithm. It should be noted here that the “arith_map_context ()” function defines the “q [0] [j]” inputs of the current context matrix qa zero for j = 0 aj = N / 4-1, if the “arith_reset_flag” indicator is active and consequently indicates that the context must be redefined. Otherwise, that is, if the “arith_reset_flag” indicator is inactive, the inputs “q [0] [j]” of the current context matrix q are derived from the inputs “q [1] [k]” of the current context matrix q. It should be noted that the function “arith_map_context ()” according to figure 5a defines the entries “q [0] [j]” of the current context matrix q to the values “q [1] [k]” of the context matrix current q, if the number of spectral values associated with the current (for example, encoded by the frequency domain) the audio structure is identical to the number of spectral values associated with the previous audio structure for j = k = 0 aj = k = N / 4-1.
213. A more complicated mapping is performed if the number of spectral values that is associated with the current audio structure is different from the number of spectral values that is associated with the previous audio structure. However, details regarding mapping in this case are not particularly relevant to this main idea of the present invention, so that reference is made to the pseudo-program code of figure 5a for details.
214. In addition, an initialization value for the current numeric context value c is returned by the “arith_map_context ()” function. This initialization value is, for example, equal to the value of the input “q [0] [0]” changed to the left by 12 bits. Thus, the numeric (current) context value c is properly initialized for an iterative update.
215. In addition, figure 5b shows another example of an “arith_map_context ()” algorithm that can alternatively be used. For details, reference is made to the pseudo-program code in figure 5b.
216. To summarize the above, the “arith_reset_flag” indicator determines whether the context should be redefined. If the indicator is true, a 500a reset sub-algorithm of the “arith_map_context ()” algorithm is called. Alternatively, however, if the “arith_reset_flag” indicator is inactive (which indicates that no context redefinition should be performed), the decoding process begins with an initialization phase where the vector of the context element (or matrix) q is updated by copying and mapping the context elements of the previous structure stored in q [1] [] in q [0] []. The context elements inside q are stored in 4 bits by 2 tuples. The copying and / or mapping of the context element is performed in a sub-algorithm 500b.
217. In the example in figure 5b, the decoding process begins with an initialization phase where a mapping is done between the previous context saved in qs and the context of the current structure q. The previous context qs is stored at 2 bits per frequency line. 11.4 Calculation of the state value according to figures 5c and 5d
218. Next, the calculation of state value 312a will be described in more detail.
219. A first example algorithm will be described with reference to figure 5c and a second example algorithm will be described with reference to figure 5d.
220. It should be noted that the current numeric context value c (as shown in figure 3) can be obtained as a return value from the function “arith_get_context (c, i, N)”, a representation of the pseudo-program code that is shown in figure 5c. Alternatively, however, the current numeric context value c can be obtained as a return value from the function “arith_get_context (c, i)”, a representation of the pseudo-program code that is shown in figure 5d.
221. Regarding the calculation of the state value, reference is also made to figure 4, which shows the context used for a state assessment, that is, for the calculation of a current numeric context value c. Figure 4 shows a two-dimensional representation of spectral values, over time and frequency. An abscissa 410 describes the time, and an ordinate 412 describes the frequency. As can be seen in Figure 4, a tuple 420 of spectral values to decode (preferably using the current numerical context value), is associated with a time index t0 and a frequency index i. As can be seen, for time index t0, tuples having frequency indices i-1, i-2, and i-3 are already decoded in time whose spectral values of tuple 120, having frequency index i, must be decoded. As can be seen from figure 4, a spectral value 430 having a time index t0 and a frequency index i-1 is already decoded before tuple 420 of spectral values is decoded, and tuple 430 of spectral values is considered for the context that is used for decoding tuple 420 of spectral values. Similarly, a tuple 440 of spectral values having a time index t0-1 and a frequency index of i-1, a tuple 450 of spectral values having a time index t0-1 and a frequency index of i, and a tuple 460 of spectral values having a time index t0-1 and a frequency index of i + 1, is already decoded before tuple 420 of spectral values is decoded, and are considered for determining the context, which is used to decode the tuple 420 of spectral values. The spectral values (coefficients) already decoded in time when the spectral values of tuple 420 are decoded and considered for the context are shown by a shaded square. In contrast, some other spectral values already decoded (at the time when the spectral values of tuple 420 are decoded), but not considered for the context (for decoding spectral values of tuple 420) are represented by squares having dashed lines, and others spectral values (which are not yet decoded in time when the spectral values of tuple 420 are decoded) are shown by circles having dashed lines. Tuples represented by squares having dashed lines and tuples represented by circles having dashed lines are not used to determine the context of decoding the spectral values of tuple 420.
222. However, it should be noted that some of these spectral values, which are not used for the “regular” or “normal” calculation of the context of decoding the spectral values of tuple 420 can, however, be evaluated for the detection of several spectral values adjacent previously decoded which fulfill, individually or together, a predetermined condition regarding their magnitudes. Details regarding this issue will be discussed below.
223. Now with reference to figure 5c, details of the “arith_get_context (c, i, N)” algorithm will be described. Figure 5c shows the functionality of the said function "arith_get_context (c, i, N)" in the form of a pseudo-program code, which uses the well-known C and / or C ++ language conventions. Thus, other details regarding the calculation of the current numerical context value “c” which is performed by the function “arith_get_context (c, i, N)” will be described.
224. It should be noted that the function “arith_get_context (c, i, N)” receives, as input variables, an “old state context”, which can be described by a numeric previous context value c. The function "arith_get_context (c, i, N)" also receives, as an input variable, an index i of a double tuple of spectral values to decode. Index i is typically a frequency index. An input variable N describes a window length of a window, in which the spectral values are decoded.
225. The function “arith_get_context (c, i, N)” provides, as an output value, an updated version of the input variable c, which describes an updated state context, and which can be considered as a current context value numeric. To summarize, the function "arith_get_context (c, i, N)" receives a numeric previous context value c as an input variable and provides an updated version of it, which is considered as a current numeric context value. In addition, the function “arith_get_context” considers the variables i, N, and also evaluates the “global” matrix q [] [].
226. Regarding the details of the function “arith_get_context (c, i, N)”, it should be noted that the variable c, which initially represents the numerical previous context value in a binary form, is shifted to the right by 4 bits in one step 504a. Thus, the four least significant bits of the previous numeric context value (represented by the input variable c) are discarded. In addition, the numerical weights of other bits of the previous numerical context values are reduced, for example, by a factor of 16.
227. In addition, if the index i of the double tuple is less than N / 4-1, that is, it does not assume a maximum value, the current numerical context value is modified where the value of the entry q [0] [i +1] is added to bits 12 to 15 (i.e., bits having a numerical weight of 212, 213, 214, and 215) of the changed context value that is obtained in step 504a. For this purpose, the input q [0] [i + 1] of the matrix q [] [] (or, more precisely, a binary representation of the value represented by said input) is changed to the left by 12 bits. The changed version of the value represented by the input q [0] [i + 1] is then added to the context value c, which is derived in step 504a, that is, the numerical representation of the previous numeric context value one changed by bit ( changed to the right in 4 bits). It should be noted here that the input q [0] [i + 1] of the matrix q [] [] represents a sub-region value associated with a previous portion of the audio content (for example, a portion of the audio content having time index t0-1, as defined with reference to figure 4), and with a higher frequency (for example, a frequency having a frequency index i + 1, as defined with reference to figure 4) than the tuple of values spectral data to be currently decoded (using the current numeric context value c issued by the function “arith_get_context (c, i, N)”). In other words, if the tuple 420 of spectral values is to be decoded using the current numerical context value, the entry q [0] [i + 1] may be based on the tuple 460 of spectral values previously decoded.
228. A selective addition of the input q [0] [i + 1] of the matrix q [] [] (changed to the left in 12 bits) is shown in reference number 504b. As can be seen, the addition of the value represented by the input q [0] [i + 1] is naturally performed only if the frequency index i does not designate a tuple of spectral values having the highest frequency index i = N / 4 -1.
229. Subsequently, in step 504c, a Boolean AND- operation is performed, in which the value of variable c is AND- combined with a hexadecimal value of 0xFFF0 to obtain an updated value of variable c. Performing such an AND operation, the four least significant bits of variable c are effectively set to zero.
230. In a step 504d, the value of input q [1] [i-1] is added to the value of variable c, which is obtained by step 504c, to then update the value of variable c. However, said updating of variable c in step 504d is only performed if the frequency index i of the double tuple to decode is greater than zero. It should be noted that the input q [1] [i-1] is a value of the context sub-region based on a tuple of spectral values previously decoded from the current part of the audio content for frequencies lower than the frequencies of the spectral values to be decoded using the current numeric context value. For example, the entry q [1] [i-1] of the matrix q [] [] can be associated with tuple 430 having the time index t0 and the frequency index i-1, if it is assumed that tuple 420 of spectral values must be decoded using the current numeric context value returned by the present execution of the function "arith_get_context (c, i, N)".
231. To summarize, bits 0, 1, 2, and 3 (that is, a part of the least significant four bits) of the numeric previous context value are discarded in step 504a by alternating them from the binary numeric representation of the previous context value numeric. In addition, bits 12, 13, 14, and 15 of the changed variable c (that is, of the previous numeric changed context value) are set to have values defined by the value of the context sub region q [0] [i + 1] at step 504b. Bits 0, 1, 2, and 3 of the previous numeric changed context value (i.e. bits 4, 5, 6, and 7 of the original numeric previous context value) are overwritten by the value of the context sub-region q [ 1] [i-1] in steps 504c and 504d.
232. Consequently, it can be said that bits 0 to 3 of the numeric pre-context value represent the value of the context sub-region associated with tuple 432 of spectral values, bits 4 to 7 of the numeric pre-context value represent the value of the context sub-region associated with a tuple 434 of previously decoded spectral values, bits 8 to 11 of the numerical previous context value represent the value of the context sub-region associated with tuple 440 of the previously decoded spectral values and bits 12 the 15 of the numerical previous context value represents a value of the context sub-region associated with the tuple 450 of previously decoded spectral values. The numerical previous context value, which is inserted in the function “arith_get_context (c, i, N)”, is associated with a decoding of tuple 430 of spectral values.
233. The current numerical context value, which is obtained as an output variable of the function “arith_get_context (c, i, N)”, is associated with a decoding of tuple 420 of spectral values. Thus, bits 0 to 3 of the current numerical context values describe the value of the context sub-region associated with tuple 430 of the spectral values, bits 4 to 7 of the current numeric context value describe the value of the context sub-region. associated with tuple 440 of spectral values, bits 8 to 11 of the current numerical context value describe the numerical value of the sub-region associated with tuple 450 of spectral value and bits 12 to 15 of the current numerical context value described the value of context sub-region associated with the 460 spectral value tuple. Thus, it can be seen that a part of the numeric previous context value, namely bits 8 to 15 of the numeric previous context value, are also included in the current numeric context value, as bits 4 to 11 of the context value numerical current. In contrast, bits 0 to 7 of the numerical prior current context value are discarded by deriving the numerical representation of the numerical current context value from the numerical representation of the numerical prior context value.
234. In a step 504e, the variable c that represents the current numerical context value is selectively updated if the frequency index i of the double tuple to decode is greater than a predetermined number of, for example, 3. In this case, that is , if i is greater than 3, it is determined whether the sum of the values of the context sub-region q [1] [i-3], q [1] [i-2], eq [1] [i-1] is less than (or equal to) a predetermined value of, for example, 5. If it is found that the sum of said values of the context subregion is less than said predetermined value, a hexadecimal value of, for example, 0x10000 , is added to variable c. Thus, variable c is defined so that variable c indicates whether there is a condition in which the values of the context sub-region q [1] [i-3], q [1] [i-2], eq [ 1] [i-1] comprises a particularly small sum value. For example, bit 16 of the current numeric context value can act as an indicator to indicate such a condition.
235. To conclude, the return value of the function “arith_get_context (c, i, N)” is determined by steps 504a, 504b, 504c, 504d, and 504e, where the current numeric context value is derived from the previous context value numeric in steps 504a, 504b, 504c, and 504d, and where an indicator indicating an environment of previously decoded spectral values having, on average, particularly small absolute values, is derived in step 504e and added to variable c. Thus, the value of variable c obtained in steps 504a, 504b, 504c, 504d is returned, in step 504f, as a return value of the function “arith_get_context (c, i, N)”, if a condition evaluated in step 504e is not met. In contrast, the value of variable c, which is derived in steps 504a, 504b, 504c, and 504d, is increased by the hexadecimal value of 0x10000 and the result of this increase operation is returned, in step 504e, if the condition evaluated in step 540e is met.
236. To summarize the above, it should be noted that the silent decoder emits 2 tuples of unsigned quantized spectral coefficients (as will be described in more detail below). First, the state c of the context is calculated based on the spectral coefficients previously decoded "around" the double tuple to decode. In a preferred embodiment, the state (which is, for example, represented by a numeric context value) is further updated using the context state of the last decoded double tuple (which is designated as a previous numeric context value), considering only two new double tuples (for example, 2 tuples 430 and 460). The state is encoded in 17 bits (for example, using a numeric representation of a current numeric context value) and is returned by the function “arith_get_context ()”. For details, reference is made to the representation of the program code in figure 5c.
237. In addition, it should be noted that a pseudo-program code for an alternative realization of the “arith_get_context ()” function is shown in figure 5d. The function “arith_get_context (c, i)” according to figure 5d is similar to the function “arith_get_context (c, i, N)” according to figure 5c. However, the function “arith_get_context (c, i)” according to figure 5d does not comprise special handling or decoding of spectral value tuples that comprise a minimum frequency index of i = 0 or a maximum frequency index of i = N / 4-1. 11.5 Selection of the mapping rule
238. In the following, the selection of a mapping rule, for example, the cumulative frequency table that describes a mapping of a password value to a symbol code, will be described. The selection of the mapping rule is made depending on a context state, which is described by the current numeric context value c. 11.5.1 Selection of the mapping rule using the algorithm according to figure 5e
239. Next, the selection of a mapping rule using the function “arith_get_pk (c)” will be described. It should be noted that the function "arith_get_pk ()" is called at the beginning of sub-algorithm 312ba when decoding a code value "acod_m" to provide a tuple of spectral values. It should be noted that the function “arith_get_pk (c)” is called with different arguments in different iterations of the 312b algorithm. For example, in a first iteration of algorithm 312b, the function “arith_get_pk (c)” is called with an argument that is equal to the current numeric context value c, provided by the previous execution of the function “arith_get_context (c, i, N) ”In step 312a. In contrast, in other iterations of sub-algorithm 312ba, the function “arith_get_pk (c)” is called with an argument that is a sum of the current numerical context value c provided by the function “arith_get_context (c, i, N)” in step 312a, and a bit version changed from the value of the variable “esc_nb”, where the value of the variable “esc_nb” is changed to the left by 17 bits. Thus, the current numeric context value c provided by the function “arith_get_context (c, i, N)” is used as an input value of the function “arith_get_pk ()” in the first iteration of the 312ba algorithm, that is, in the decoding of values comparatively small spectral spectra. In contrast, when decoding comparably larger spectral values, the input variable of the function "arith_get_pk ()" is modified where the value of the variable "esc_nb" is taken into account, as shown in figure 3.
240. Now with reference to figure 5e, which shows a representation of the pseudo-program code of a first realization of the function “arith_get_pk (c)”, it should be noted that the function “arith_get_pk ()” receives the variable c as a value input, where variable c describes the state of the context, and where input variable c of the function "arith_get_pk ()" is equal to the current numeric context value provided as a return variable of the function "arith_get_context ()" at least in some situations. In addition, it should be noted that the function “arith_get_pk ()” provides, as an output variable, the variable “pki”, which describes an index of a probability model and which can be considered as a rule value index of mapping.
241. Referring to figure 5e, it can be seen that the “arith_get_pk ()” function comprises an initialization of variable 506a, in which the variable “i_min” is initialized to have a value of -1. Similarly, variable i is defined to be equal to variable “i_min”, so variable i is also initialized to a value of -1. The “i_max” variable is initialized to assume a value that is less, in 1, than the number of entries in the “ari_lookup_m []” table (details that will be described with reference to figures 21 (1) and 21 (2)) . Thus, the variables “i_min” and “i_max” define an interval.
242. Subsequently, a 506b search is performed to identify an index value that designates an entry in the table “ari_hash_m”, so that the value of the input variable c of the function “arith_get_pk ()” within a range defined by said entry and an adjacent entrance.
243. In search 506b, a sub-algorithm 506ba is repeated, as long as a difference between the variables “i_max” and “i_min” is greater than 1. In sub-algorithm 506ba, variable i is defined to be equal to an arithmetic medium the values of the variables “i_min” and “i_max”. Consequently, variable i designates a table entry “ari_hash_m []” in the middle of a table range defined by the values of the variables “i_min” and “i_max”. Subsequently, the variable j is defined to be equal to the value of the “ari_hash_m [i]” entry in the “ari_hash_m []” table. Thus, the variable j assumes a value defined by an entry in the table “ari_hash_m []”, whose entry remains in the middle of a table interval defined by the variables “i_min” and “i_max”. Subsequently, the interval defined by the variables “i_min” and “i_max” is updated if the value of the input variable c of the function “arith_get_pk ()” is different from a state value defined by the upper bits of the table entry “j = ari_hash_m [i] ”from the table“ ari_hash_m [] ”. For example, the "upper bits" (bits 8 and above) of the entries in the "ari_hash_m []" table describe significant state values. Thus, the value "j >> 8" describes a significant state value represented by the entry "j = ari_hash_m [i]" in the table "ari_hash_m []" designated by the index hash-value table i. Thus, if the value of variable c is less than the value “j >> 8”, this means that the state value described by variable c is less than a significant state value described by the entry “ari_hash_m [i]” in the table "Ari_hash_m []". In this case, the value of the variable “i_max” is defined to be equal to the value of variable i, which in turn has the effect that a size of the interval defined by “i_min” and “i_max” is reduced, in which the new interval is approximately equal to the bottom half of the previous interval. If it is observed that the input variable c of the function “arith_get_pk ()” is greater than the value “j >> 8”, which means that the context value described by variable c is greater than a significant state value described by the input “Ari_hash_m [i]” of the matrix “ari_hash_m []”, the value of the variable “i_min” is set to be equal to the value of variable i. Thus, the size of the interval defined by the values of the variables "i_min" and "i_max" is reduced approximately half the size of the previous interval, defined by the previous values of the variables "i_min" and "i_max". To be more precise, the interval defined by the updated value of the variable “i_min” and the previous value of the variable (not changed) “i_max” is approximately equal to the upper half of the previous interval in the case where the value of variable c is greater than the significant state value defined by the entry “ari_hash_m [i]”.
244. If, however, it is observed that the context value described by the input variable c of the algorithm “arith_get_pk ()” is equal to the significant state value defined by the input “ari_hash_m [i]” (that is, c == ( j >> 8)), a mapping rule index value defined by the lowest 8 bits of the entry “ari_hash_m [i]” is returned as the return value of the function “arith_get_pk ()” (instruction “return (j & 0xFF) ”).
245. To summarize the above, an entry “ari_hash_m [i]”, the upper bits (bits 8 and above) of which describe a significant state value, is evaluated in each iteration 506ba, and the context value (or value current numeric context) described by the input variable c of the function "arith_get_pk ()" is compared with the significant state value described by said table entry "ari_hash_m [i]". If the context value represented by the input variable c is less than the significant state value represented by the table entry “ari_hash_m [i]”, the upper limit (described by the value “i_max”) of the table range is reduced, and if the context value described by the input variable c is greater than the significant state value described by the table entry “ari_hash_m [i]”, the lower limit (which is described by the value of the variable “i_min”) of the table range is increased. In both cases, the 506ba sub-algorithm is repeated, unless the size of the interval (defined by the difference between “i_max” and “i_min”) is less than, or equal to, 1. If, in contrast, the context value described by variable c is equal to the significant state value described by the table entry “ari_hash_m [i]”, the function “arith_get_pk ()” is aborted, where the return value is defined by the lower 8 bits of table entry “ari_hash_m [i]”.
246. If, however, search 506b is completed because the range size reaches its minimum value (“i_max” - “i_min” is less than, or equal to, 1), the return value of the function “arith_get_pk () ”Is determined by an entry“ ari_lookup_m [i_max] ”in the table“ ari_lookup_m [] ”, which can be seen in reference number 506c. Thus, the entries in the “ari_hash_m []” table define both significant state values and range limits. In the 506ba sub-algorithm, the search range limits “i_min” and “i_max” are adapted iteratively, so that the entry “ari_hash_m [i]” in the table “ari_hash_m []”, an index of the hash table i of which it remains, at least approximately, in the center of the search range defined by the range limit values “i_min” and “i_max”, at least approximates a context value described by the input variable c. It is then achieved that the context value described by the input variable c within a range defined by “ari_hash_m [i_min]” and “ari_hash_m [i_max]” after the completion of the iterations of sub-algorithm 506ba, unless the value of context described by the input variable c is equal to a significant state value described by an entry in the table “ari_hash_m []”.
247. If, however, the iterative repetition of sub-algorithm 506ba is terminated because of the length of the interval (defined by “i_max” - i_min ”) it reaches or exceeds its minimum value, it is assumed that the context value described by the variable input c is not a significant state value. In this case, the index “i_max”, which designates an upper limit of the range, is, however, used. The upper “i_max” value of the range, which is reached in the last iteration of sub-algorithm 506ba, is reused as an index value of the table for accessing the “ari_lookup_m” table. The “ari_lookup_m []” table describes mapping rule index values associated with the ranges of several adjacent numeric context values. The ranges, in which the mapping rule index values described by the “ari_lookup_m []” table entries are associated, are defined by the significant state values described by the “ari_hash_m []” table entries. The entries in the “ari_hash_m” table define both significant state values and the limits of adjacent numeric context value ranges. In the execution of the 506b algorithm, it is determined whether the numerical context value described by the input variable c is equal to a significant state value, and if this is not the case, whose range of numerical context values (of the various intervals, limits of which are defined by the significant state values) the context value described by the input variable c remains. Thus, the 506b algorithm has a dual functionality to determine whether the input variable c describes a significant state value and, if not, to identify an interval, delimited by significant state values, in which the context value represented by the input variable c remains. Thus, the 506e algorithm is particularly efficient and requires only a comparatively small number of table accesses.
248. To summarize the above, the state of context c determines the cumulative frequency table used to decode the most significant bitwise plane m. The mapping of c to the index of the corresponding cumulative frequency table “pki” as performed by the function “arith_get_pk ()”. A representation of the code of the pseudo-program of said function "arith_get_pk ()" was explained with reference to figure 5e.
249. To summarize the above, the m value is decoded using the “arith_decode ()” function (which is described in more detail below) called with the cumulative frequency table “arith_cf_m [ki] []”, where “pki” corresponds to the index (also known as the mapping rule index value) returned by the “arith_get_pk ()” function, which is described with reference to figure 5e. 11.5.2 Selection of the mapping rule using the algorithm according to figure 5f
250. In the following, another realization of a selection of the algorithm of the mapping rule “arith_get_pk ()” will be described with reference to figure 5f which shows a representation of the pseudo-program code of such algorithm, which can be used in decoding a tuple of spectral values. The algorithm according to figure 5f can be considered as an optimized version (for example, speed optimized version) of the algorithm, “get_pk ()” or the algorithm “arith_get_pk ()”.
251. The “arith_get_pk ()” algorithm according to figure 5f receives, as an input variable, a variable c that describes the state of the context. The input variable c can, for example, represent a current numeric context value.
252. The “arith_get_pk ()” algorithm provides, as an output variable, a “pki” variable, which describes the index of a probability distribution (or probability model) associated with a state of the context described by the input variable c . The “pki” variable can, for example, be a mapping rule index value.
253. The algorithm according to figure 5f comprises a definition of the contents of the matrix “i_diff []”. As can be seen, a first entry in the matrix “i_diff []” (having an index of the matrix 0) is equal to 299 and other entries in the matrix (having indexes of the matrix 1 to 8) take the values of 149, 74, 37 , 18, 9, 4, 2, and 1. Thus, the step size for selecting an index value from the hash table “i_min” is reduced with each iteration, as the entries in the “i_diff []” matrices define the said step sizes. For details, reference is made to the discussion below.
254. However, different step sizes, for example, different contents of the “i_diff []” matrix can generally be chosen, in which the contents of the “i_diff []” matrix can of course be adapted to the size of the hash table “ari_hash_m [i ] ”.
255. It should be noted that the “i_min” variable is initialized to assume a correct value of 0 at the beginning of the “arith_get_pk ()” algorithm.
256. In an initialization step 508a, a variable s is initialized depending on input variable c, in which a numerical representation of variable c is shifted to the left by 8 bits in order to obtain the numerical representation of variable s.
257. Subsequently, a search of table 508b is performed in order to identify an index value from the hash table “i_min” of a hash table entry “ari_hash_m []”, so that the context value described by the context value c within a range that is delimited by the context value described by the hash table entry “ari_hash_m [i_min]” and a context value described by another hash table entry “ari_hash_m” whose other entry “ari_hash_m” is adjacent (in terms of its hash table index value) to the hash table entry “ari_hash_m [i_min]”. Thus, the algorithm 508b allows to determine an index value of the hash table "i_min" by designating an entry "j = ari_hash_m [i_min]" of the hash table "ari_hash_m []", so that the hash table entry "ari_hash_m [i_min] ”At least approximate the context value described by the input variable c.
258. Table search 508b comprises an iterative execution of a sub-algorithm 508ba, in which sub-algorithm 508ba is performed for a predetermined number of, for example, nine iterations. In the first step of the 508ba sub-algorithm, variable i is set to a value that is equal to the sum of a value of a variable “i_min” and a value of a table entry “i_diff [k]”. It should be noted here that k is an execution variable, which is increased, starting from an initial value of k = 0, with each iteration of the 508ba sub-algorithm. The “i_diff []” matrix defines predetermining the increase values, in which the increase values decrease with the increase in the index of table k, that is, with an increase in the number of iterations.
259. In a second step of the 508ba sub-algorithm, a value from a table entry “ari_hash_m []” is copied into a variable j. Preferably, the upper bits of the “ari_hash_m []” table entries describe significant state values of a numeric context value, and the lower bits (bits 0 to 7) of the “ari_hash_m []” table entries describe index values mapping rule associated with the respective significant state values.
260. In a third step of sub-algorithm 508ba, the value of variable S is compared with the value of variable j, and the variable “i_min” is selectively set to the value “i + 1” if the value of variable s is greater that the value of variable j. Subsequently, the first step, the second step, and the third step of the 508ba sub-algorithm are repeated for a predetermined number of times, for example, nine times. Thus, in each execution of the 508ba sub-algorithm, the value of the variable “i_min” is increased by i_diff [] + 1, if, and only if, the context value described by the index of the currently valid hash table i_min + i_diff [] is less than the context value described by the input variable c. Thus, the index value of the hash table “i_min” is (iteratively) increased in each execution of the 508ba sub-algorithm if (and only if) the context value described by the input variable c and, consequently, by the variable s, is greater than the context value described by the entry “ari_hash_m [i = i_min + diff [k]]”.
261. In addition, it should be noted that only a single comparison, namely, the comparison as if the value of variable s was greater than the value of variable j, is performed in each execution of sub-algorithm 508ba. Thus, the 508ba algorithm is computationally particularly efficient. In addition, it should be noted that there are different possible results with respect to the final value of the variable “i_min”. For example, it is possible that the value of the variable “i_min” after the last execution of sub-algorithm 512ba is such that the context value described by the table entry “ari_hash_m [i_min]” is less than the context value described by input variable c, and that the context value described by the table entry “ari_hash_m [i_min +1]” is greater than the context value described by input variable c. Alternatively, it may happen that after the last run of sub-algorithm 508ba, the context value described by the hash table entry “ari_hash_m [i_min -1]” is less than the context value described by input variable c, and that the context value described by the input “ari_hash_m [i_min]” is greater than the context value described by the input variable c. Alternatively, however, it may happen that the context value described by the hash table entry “ari_hash_m [i_min]” is identical to the context value described by the input variable c.
262. For this reason, a provision for the return value based on decision 508c is made. The variable j is defined to have the value of the hash table entry “ari_hash_m [i_min]”. Subsequently, it is determined whether the context value described by the input variable c (and also by the variable s) is greater than the context value described by the input “ari_hash_m [i_min]” (first case defined by a condition “s> j” ), or if the context value described by the input variable c is less than the context value described by the hash table entry “ari_hash_m [i_min]” (second case defined by a condition “c <j>> 8”), or if the context value described by the input variable c is equal to the context value described by the input “ari_hash_m [i_min]” (third case).
263. In the first case, (s> j), an entry “ari_lookup_m [i_min +1]” from table “ari_lookup_m []” designated by the index value of table “i_min + 1” is returned as the output value of the function "Arith_get_pk ()". In the second case (c <(j >> 8)), an entry “ari_lookup_m [i_min]” from table “ari_lookup_m []” designated by the index value of table “i_min” is returned as the return value of the function “arith_get_pk () ". In the third case (that is, if the context value described by the input variable c is equal to the significant state value described by the table entry “ari_hash_m [i_min]”), a mapping rule index value described by the 8 bits lowest of the hash table entry “ari_hash_m [i_min]” is returned as the return value of the function “arith_get_pk ()”.
264. To summarize the above, a particularly simple table search is performed in step 508b, where the table search provides a variable value of a variable “i_min” without distinguishing whether the context value described by the input variable c is equal to a significant state value defined by one of the state table entries “ari_hash_m []” or not. In step 508c, which is performed subsequent to table search 508b, a magnitude relationship between the context value described by the input variable c and a significant state value described by the hash table entry “ari_hash_m [i_min]” is evaluated, and the return value of the function "arith_get_pk ()" is selected depending on a result of the said evaluation, in which the value of the variable "i_min", which is determined in the evaluation of table 508b, is considered to select a rule index value of mapping even if the context value described by the input variable c is different from the significant state value described by the hash table entry “ari_hash_m [i_min]”.
265. It should also be noted that the comparison in the algorithm should preferably (or alternatively) be made between the context index (numerical context value) c and j = ari_hash_m [i] >> 8. In addition, each entry in the “ari_hash_m []” table represents a context index, encoded beyond the 8th bit, and its corresponding probability model encoded in the first 8 bits (least significant bits). In the current implementation, we are mainly interested in knowing whether the present context c is greater than ari_hash_m [i] >> 8, which is equivalent to detection if s = c << 8 is also greater than ari_hash_m [i].
266. To summarize the above, since the context state is calculated (which can, for example, be obtained using the “arith_get_context (c, i, N)” algorithm according to figure 5c, or the “arith_get_context algorithm (c, i) ”according to figure 5d, the most significant bitwise plane is decoded using the“ arith_decode ”algorithm (which will be described below) called with the appropriate cumulative frequency table corresponding to the probability model corresponding to the context state.The correspondence is made by the function “arith_get_pk ()”, for example, the function “arith_get_pk ()” that was discussed with reference to figure 5f. 11.6 Arithmetic decoding 11.6.1 Arithmetic decoding using the algorithm according to figure 5g
267. Next, the functionality of the “arith_decode ()” function will be discussed in detail with reference to figure 5g.
268. It should be noted that the function “arith_decode ()” uses the help function “arith_first_symbol (void)”, which returns TRUE, if it is the first symbol of the sequence and FALSE otherwise. The “arith_decode ()” function also uses the “arith_get_next_bit (void)” help function, which obtains and provides the next bit of the bit stream.
269. In addition, the “arith_decode ()” function uses the global variables “low”, “high” and “value”. Also, the function "arith_decode ()" receives, as an input variable, the variable "cum_freq []", which points towards a first entry or element (having the element index or input index 0) of the table of cumulative frequencies selected or cumulative frequency sub-table. Also, the function “arith_decode ()” uses the input variable “cfl”, which indicates the length of the selected cumulative frequency table or sub-table of cumulative frequencies designated by the variable “cum_freq []”.
270. The “arith_decode ()” function comprises, as a first step, an initialization of variable 570a, which is performed if the help function “arith_first_symbol ()” indicates that the first symbol in a sequence of symbols is being decoded. Initializing the value 550a initializes the variable “value” depending on several, for example, 16 bits, which are obtained from the bit stream using the help function “arith_get_next_bit”, so that the variable “value” has the value represented by said bits. Also, the “low” variable is initialized to have a value of 0, and the “high” variable is initialized to have a value of 65535.
271. In a second step 570b, the variable “range” is set to a value, which is greater, in 1, than the difference between the values of the “high” and “low” variables. The “cum” variable is set to a value that represents a relative position of the “value” variable between the “low” variable value and the “high” variable value. Thus, the variable “cum” has, for example, a value between 0 and 216 depending on the value of the variable “value”.
272. Pointer p is initialized to a value that is less, by 1, than the starting address of the selected cumulative frequency table.
273. The “arith_decode ()” algorithm also comprises an iterative search of the 570c cumulative frequency table. The iterative search of the cumulative frequency table is repeated until the variable cfl is less than or equal to 1. In the iterative search of the cumulative frequency table 570c, the pointer variable q is set to a value, which is equal to a sum the current value of the pointer variable p and half the value of the “cfl” variable. If the value of input * q of the selected cumulative frequency table, whose input is driven by the variable of pointer q, is greater than the value of the variable “cum”, the variable of pointer p is set to the value of pointer variable q, and the “cfl” variable is increased. Finally, the variable “cfl” is changed to the right by a bit, so effectively divides the value of the variable “cfl” by 2 and ignores the module part.
274. Thus, the iterative search of the 570c cumulative frequency table effectively compares the value of the “cum” variable with several entries in the selected cumulative frequency table, in order to identify an interval within the selected cumulative frequency table, which is delimited by cumulative frequency table entries, obtaining the sum of the value within the identified range. Thus, the entries in the selected cumulative frequency table define the intervals, where a respective symbol value is associated with each of the intervals in the selected cumulative frequency table. In addition, the widths of the intervals between two adjacent values in the cumulative frequency table define the probabilities of the symbols associated with said intervals, so that the cumulative frequency table selected in its entirety defines a probability distribution of different symbols (or symbol values ). Details regarding the available cumulative frequency tables will be discussed below with reference to figure 23.
275. Referring again to figure 5g, the value of the symbol is derived from the value of the pointer variable p, where the value of the symbol is derived as shown in reference number 570d. Thus, the difference between the value of the pointer variable p and the initial address “cum_freq” is evaluated in order to obtain the value of the symbol, which is represented by the variable “symbol”.
276. The “arith_decode” algorithm also comprises a 570e adaptation of the “high” and “low” variables. If the value of the symbol represented by the variable “symbol” is different from 0, the variable “high” is updated, as shown in reference number 570e. In addition, the value of the “low” variable is updated, as shown in reference number 570e. The “high” variable is set to a value that is determined by the value of the “low” variable, the “range” variable and the entry having the “symbol -1” index of the selected cumulative frequency table. The “low” variable is increased, where the magnitude of the increase is determined by the “range” variable and the entry of the selected cumulative frequency table with the “symbol” index. Thus, the difference between the values of the “low” and “high” variables is adjusted depending on the numerical difference between the two adjacent entries in the selected cumulative frequency table.
277. Thus, if a symbol value having a low probability is detected, the gap between the values of the “low” and “high” variables is reduced to the narrow width. In contrast, if the value of the detected symbol comprises a relatively large probability, the width of the interval between the values of the “low” and “high” variables is adjusted to the comparatively large value. Again, the width of the interval between the values of the variable “low” and “high” is dependent on the detected symbol and the corresponding cumulative frequency table entries.
278. The “arith_decode ()” algorithm also comprises a renormalization of the 570f interval, in which the interval determined in step 570e is iteratively changed and scaled until the “interrupt” condition is reached. When the 570f interval is renormalized, a 570fa selective down shift operation is performed. If the “high” variable is less than 32768, nothing is done, and the renormalization of the interval continues with an operation to increase the size of the 570fb interval. If, however, the “high” variable is not less than 32768 and the “low” variable is greater than or equal to 32768, the “values”, “low” and “high” variables are all reduced to 32768, so that a interval defined by the variables "low" and "high" is changed downwards, and so that the value of the variable "value" is also changed downwards. If, however, it is observed that the value of the “high” variable is not less than 32768, and that the “low” variable is not greater than or equal to 32768, and that the “low” variable is greater than or equal to 16384 and that the “high” variable is less than 49152, the “value”, “low” and “high” variables are all reduced to 16384, thus reducing the interval between the values of the “high” and “low” variables and also the value of “value” variable. If, however, none of the above conditions are met, the renormalization of the interval is aborted.
279. If, however, any of the conditions mentioned above, which are evaluated in step 570fa, are met, the 570fb interval increase operation is performed. In the operation of increasing the 570fb interval, the value of the “low” variable is doubled. Also, the value of the “high” variable is doubled, and the result of the folding operation is increased by 1. Also, the value of the “value” variable is doubled (changed to the left by a bit), and a bit of the flow bits, which is obtained by the help function “arith_get_next_bit” is used as the least significant bit. Thus, the size of the interval between the values of the “low” and “high” variables is approximately doubled, and the precision of the “value” variable is increased using a new bit of the bit stream. As mentioned above, steps 570fa and 570fb are repeated until the “interrupt” condition is reached, that is, until the interval between the values of the “low” and “high” variables is large enough.
280. With reference to the functionality of the “arith_decode ()” algorithm, it should be noted that the interval between the values of the “low” and “high” variables is reduced in step 570e depending on two adjacent entries in the cumulative frequency table referenced by the variable "Cum_freq". If an interval between two adjacent values in the selected cumulative frequency table is small, that is, if the adjacent values are comparable together, the interval between the values of the “low” and “high” variables, which is obtained in step 570e, will be comparably small. In contrast, if two adjacent entries in the cumulative frequency table are more widely spaced, the interval between the values of the “low” and “high” variables, which is obtained in step 570e, will be comparably large.
281. Consequently, if the interval between the values of the “low” and “high” variables, which is obtained in step 570e, is comparatively small, a large number of renormalization of the interval steps will be performed to resize the interval to “sufficient size ”(So that none of the conditions of a 570fa condition assessment are met). Thus, a comparatively large number of bits in the bit stream will be used in order to increase the accuracy of the “value” variable. If, in contrast, the size of the interval obtained in step 570e is comparably large, only a smaller number of repetitions of the steps for normalizing the interval 570fa and 570fb will be necessary in order to renormalize the interval between the values of the variables “low” and “ high ”to the“ sufficient ”size. Thus, only a comparatively small number of bits in the bit stream will be used to increase the precision of the “value” variable and to prepare a decoding of the next symbol.
282. To summarize the aforementioned, if a symbol is decoded, which comprises a comparatively high probability, and in which a large interval is associated with the inputs of the selected cumulative frequency table, only a comparatively small number of bits will be read from the stream. bits to allow decoding of a subsequent symbol. In contrast, if a symbol is decoded, which comprises a comparably small probability and in which a small interval is associated by the entries in the selected cumulative frequency table, a comparatively large number of bits will be considered from the bit stream in order to prepare for decoding next symbol.
283. Thus, the cumulative frequency table entries reflect the probabilities of the different symbols and also reflect the number of bits required for decoding a sequence of symbols. By varying the cumulative frequency table depending on a context, that is, depending on the previously decoded symbols (or spectral values), for example, by selecting different cumulative frequency tables depending on the context, the stochastic dependencies between the different symbols can be explored, that allow efficient encoding of the particular bit rate of subsequent (or adjacent) symbols.
284. To summarize the above, the “arith_decode ()” function, which was described with reference to figure 5g, is called with the cumulative frequency table “arith_cf_m [ki] []”, corresponding to the “pki” index returned by an “arith_get_pk ()” function to determine the value of the most significant bit plane m (which can be set to the value of the symbol represented by the “symbol” return variable).
285. To summarize the above, the arithmetic decoder is an integer implementation using the scale identification generation method. For details, reference is made to the book “Introduction to Data Compression” by K. Sayood, Third Edition, 2006, Elsevier Inc.
286. The computer program code according to figure 5g describes the algorithm used according to an embodiment of the invention. 11.6.2 Arithmetic decoding using the algorithm according to figures 5h and 5i
287. Figures 5h and 5i show a representation of the pseudo-program code from another realization of the “arith_decode ()” algorithm, which can be used as an alternative to the “arith_decode” algorithm described with reference to figure 5g.
288. It should be noted that the algorithms according to figure 5g and figures 5h and 5i can be used in the algorithm “values_decode ()” according to figure 3.
289. To summarize, the m value is decoded using the “arith_decode ()” function called with the cumulative frequency table “arith_cf_m [ki] []” where “pki” corresponds to the index returned by the “arith_get_pk ()” function. The arithmetic encoder (or decoder) is an integer implementation using the scaled identification generation method. For details, reference is made to the book “Introduction to Data Compression” by K. Sayood, Third Edition, 2006, Elsevier Inc. The computer program code according to figures 5h and 5i describes the algorithm used. 11.7 Exhaust mechanism
290. Next, the escape mechanism, which is used to decode the “values_decode ()” algorithm according to figure 3, will be briefly discussed.
291. When the decoded value m (which is provided as a return value for the function “arith_decode ()”) is the escape symbol “ARITH_ESCAPE”, the variables “lev” and “esc_nb” are increased by 1, and the other m value is decoded. In this case, the function “arith_get_pk ()” is called again with the value “c + esc_nb << 17” as an input argument, where the variable “esc_nb” describes the number of escape symbols previously decoded for the same double tuple and enclosed at 7.
292. To summarize, if an escape symbol is identified, it is assumed that the value of the most significant bit plane m comprises an increased numerical weight. In addition, the current numeric decoding is repeated, in which a modified current numeric context value “c + esc_nb << 17” is used as an input variable to the “arith_get_pk ()” function. Thus, a different mapping rule index value “pki” is typically obtained in the different iterations of the 312ba sub-algorithm. 11.8 Arithmetic stop mechanism
293. In the following, the arithmetic stop mechanism will be described. The arithmetic stop mechanism allows the reduction of the number of bits needed in the case where the part of the upper frequency is completely quantized to 0 in an audio encoder.
294. In one embodiment, an arithmetic stop mechanism can be implemented as follows: since the value m is not the escape symbol, "ARITH_ESCAPE", the decoder checks whether the successive m forms an "ARITH_ESCAPE" symbol. If a condition “esc_nb> 0 && m == 0” is true, the symbol “ARITH_STOP” is detected and the decoding process is ended. In this case, the decoder goes directly to the “arith_finish ()” function which will be described below. The condition means that the rest of the structure is made up of 0 values. 11.9 Decoding the least significant bit plane
295. In the following, the decoding of one or more less significant bit planes will be described. Decoding the least significant bit plane is performed, for example, in step 312d shown in figure 3. Alternatively, however, the algorithms as shown in figures 5j and 5n can be used. 11.9.1 Decoding the least significant bit plane according to figure 5j
296. Now with reference to figure 5j, it can be seen that the values of variables a and b are derived from the value m. For example, the numerical representation of the value m is shifted to the right by 2 bits to obtain the numerical representation of variable b. In addition, the value of variable a is obtained by subtracting an offset version of the bit from the value of variable b, shifted by bit to the left in 2 bits, from the value of variable m.
297. Subsequently, an arithmetic decoding of the values of the least significant bit plane r is repeated, in which the number of repetitions is determined by the value of the variable “lev”. A less significant bit plane value r is obtained using the “arith_decode” function, in which the cumulative frequency table adapted to the decoding of the least significant bit plane is used (cumulative frequency table “arith_cf_r”). A less significant bit (having a numerical weight of 1) of variable r describes a less significant bit plane of the spectral value represented by variable a, and a bit having a numerical weight of 2 of variable r describes a less significant bit of spectral value. represented by variable b. Thus, variable a is updated by changing variable a to the left by 1 bit and adding the bit having the numerical weight of 1 of variable r as the least significant bit. Similarly, variable b is updated by changing variable b on the left by a bit and adding the bit having the numerical weight of 2 of variable r.
298. Thus, the two bits that carry the most significant information from variables a, b are determined by the value of the most significant bit plane m, and one or more less significant bits (if any) of the values a and b are determined by one or more values the least significant bit plane r.
299. To summarize the above, if the “ARITH_STOP” symbol is not found, the remaining bit planes are then decoded, if any, to the double tuple present. The remaining bit planes are decoded from the most significant to the least significant level by calling the "arith_decode ()" lev function several times with the cumulative frequency table "arith_cf_r []". The decoded bit planes r allow the refining of the previously decoded value m according to the algorithm, a code of the pseudo-program that is shown in figure 5j. 11.9.2 Decoding the least significant bit range according to figure 5n
300. Alternatively, however, the algorithm of a representation of the pseudo-program code that is shown in figure 5n can also be used for decoding the least significant bit plane. In this case, if the symbol “ARITH_STOP” is not found, the remaining bit planes are then decoded, if any, for the present double tuple. The remaining bit planes are decoded from the most significant to the least significant level by calling "lev" times "arith_decode ()" with the cumulative frequency table "arith_cf_r ()". The decoded bit planes r allow refining the previously decoded value m according to the algorithm shown in figure 5n. 11.10 Context update 11.10.1 Context update according to figure 5k, 5l, and 5m
301. Next, the operations used to complete the decoding of the tuple of spectral values will be described, with reference to figures 5k and 5l. In addition, an operation will be described which is used to complete a decoding of a set of tuples of spectral values associated with a current part (for example, a current structure) of audio content.
302. Now with reference to figure 5k, it can be seen that the input having the input index 2 * i of the matrix “x_ac_dec []” is defined to be equal to y, and that the input having the input index “2 * i +1 ”of the“ x_ac_dec [] ”array is set to be equal to b after the least significant bit decoding 312d. In other words, at the point after the least significant bit decoding 312d, the unsigned value of the double tuple (a, b) is completely decoded. It is saved in the element (for example, the matrix “x_ac_dec []”) that maintains the spectral coefficients according to the algorithm shown in figure 5k.
303. Subsequently, the “q” context is also updated to the next double tuple. It should be noted that this context update must also be performed for the last double tuple. This context update is performed by the function “arith_update_context ()”, a representation of the pseudo-program code which is shown in figure 5l.
304. Now with reference to figure 5l, it can be seen that the function "arith_update_context (i, a, b)" receives, as input variables, unsigned signaled quantized spectral coefficients (or spectral values) a, b of the double tuple. In addition, the function “arith_update_context” also receives, as an input variable, an index i (for example, a frequency index) of the quantized spectral coefficient to decode. In other words, the input variable i can, for example, be an index of the tuple of spectral values, absolute values that are defined by the input variables a, b. As can be seen, the entry “q [1] [i]” of the matrix “q [] []” can be set to a value that is equal to + b + 1. In addition, the value of the input “q [1] [i]” of the matrix “q [] []” can be limited to the hexadecimal value of “0xF”. Thus, the entry “q [1] [i]” of the matrix “q [] []” is obtained by calculating a sum of absolute values of the currently decoded tuple {a, b} of spectral values having the frequency index i, and adding 1 to the result of said sum.
305. It should be noted here that the entry “q [1] [i]” of the matrix “q [] []” can be considered as a value of the context sub region, as it describes a context sub region that is used for subsequent decoding of additional spectral values (or tuples of spectral values).
306. It should be noted here that the sum of the absolute values a and b of the two spectral values currently decoded (signed versions that are stored in the entries “x_ac_dec [2 * i]” and “x_ac_dec [2 * i + 1]” of the matrix “x_ac_dec [] ”), Can be considered as the calculation of a norm (for example, an L1 norm) of decoded spectral values.
307. It was observed that the values of the context subregion (that is, entries in the matrix “q [] []”), which describe a norm of a vector formed by several spectral values previously decoded are particularly significant and with efficient memory . It was observed that this standard, which is calculated based on several spectral values previously decoded, comprises significant context information in a compact form. It was observed that the sign of the spectral values is not typically particularly relevant for the choice of context. It was also observed that the formation of a norm through the various spectral values previously decoded typically maintains the most important information, although some details are discarded. In addition, it has been observed that limiting the current numerical context value to the maximum value does not typically result in a serious loss of information. Preferably, it has been found that it is more efficient to use the same state of context for significant spectral values that are greater than a predetermined threshold value. Thus, limiting the values of the context sub-region brings further improvement in memory efficiency. In addition, it was observed that limiting the values of the context sub-region to a certain maximum value allows an efficient computational and particularly simple update of the current numerical context value, which has been described, for example, with reference to figures 5c and 5d. By limiting the values of the context sub-region to a comparatively small value (for example, a value of 15), a context state that is based on several values of the context sub-region can be represented in an efficient way, which was discussed with reference to figures 5c and 5d.
308. In addition, it was observed that a limitation of the values of the context sub-region of the values between 1 and 15, brings with it a particularly good compromise between precision and memory efficiency, since 4 bits are sufficient in order to store such value of the context sub-region.
309. However, it should be noted that in other embodiments, a value of the context subregion may be based on a single spectral decoded value only. In this case, the formation of a standard can optionally be omitted.
310. The next double tuple of the structure is decoded after the completion of the “arith_update_context” function, increasing i by 1 and redoing the same process as described above, starting with the “arith_get_context ()” function.
311. When the 2 lg / 2 tuples are decoded within the structure, or with the stop symbol according to “ARITH_ESCAPE” occurs, the spectral amplitude decoding process ends and the decoding of the signals begins.
312. Details regarding the decoding of the signals were discussed with reference to figure 3, in which the decoding of the signals is shown in reference number 314.
313. Since all non-signaled quantized spectral coefficients are decoded, the corresponding signal is added. For each non-zero quantized value of “x_ac_dec”, a bit is read. If the reading bit value is equal to 0, the quantized value is positive, nothing is done and the signaled value is equal to the previously decoded non-signaled value. Otherwise (that is, if the reading bit value is equal to 1), the decoded coefficient (or spectral value) is negative and the complement of two is considered to be the unsigned value. The signal bits are read from low to high frequencies. For details, reference is made to figures 3 and the explanations regarding the decoding of signals 314.
314. Decoding is ended by calling the function “arith_finish ()”. The remaining spectral coefficients are set to 0. The respective context states are updated accordingly.
315. For details, reference is made to figure 5m, which shows a representation of the pseudo-program code for the “arith_finish ()” function. As can be seen, the “arith_finish ()” function receives an input variable lg that describes the decoded quantized spectral coefficients. Preferably, the input variable lg of the function "arith_finish" describes a number of spectral coefficients currently decoded, leaving the spectral coefficients disregarded, where a value of 0 has been allocated in response to the detection of an "ARITH_STOP" symbol. An input variable N of the “arith_finish” function describes a window length of a current window (that is, a window associated with the current part of the audio content). Typically, a number of spectral values associated with a window of length N is equal to N / 2 and a number of 2 tuples of spectral values associated with a window of length N is equal to N / 4.
316. The “arith_finish” function also receives, as an input value, an “x_ac_dec” vector of decoded spectral values, or at least a reference to such a vector of spectral decoded coefficients.
317. The “arith_finish” function is configured to define the matrix entries (or vector) “x_ac_dec”, for which no spectral value was decoded due to the presence of an arithmetic stop condition, at 0. In addition, the “ arith_finish ”defines values of the context sub-region“ q [1] [i] ”, which are associated with a spectral value for which no value has been decoded due to the presence of an arithmetic stop condition, to the predetermined value of 1. O default value of 1 corresponds to the tuple of spectral values where both spectral values are equal to 0.
318. Thus, the function “arith_finish ()” allows updating the entire matrix (or vector) “x_ac_dec []” of spectral values and also the entire value matrix of the context sub-region “q [1] [i]” , even in the presence of an arithmetic stop condition. 11.10.2 Context update according to figures 5 and 5
319. In the following, another realization of the context update will be described with reference to figures 5o and 5p. At the point where the unsigned value of the double tuple (a, b) is completely decoded, the context q is then updated to the next double tuple. The update is also performed if the present double tuple is the last double tuple. Both updates are made using the “arith_update_context ()” function, the representation of the pseudo-program code that is shown in figure 5o.
320. The next double tuple of the structure is then decoded by increasing i by 1 and calling the arith_decode () function. If the 2 lg / 2 tuples have already been decoded with the structure, or if the stop symbol “ARITH_STOP” has occurred, the function “arith_finish ()” is called. The context is saved and stored in the matrix (or vector) “qs” for the next structure. A code for the pseudo-program of the function “arith_save_context ()” is shown in figure 5p.
321. Since all non-signaled quantized spectral coefficients are decoded, the signal is then additional. For each non-quantized “qdec” value, a bit is read. If the reading bit value is equal to 0, the quantized value is positive, nothing is done and the signaled value is equal to the previously decoded non-signaled value. Otherwise, the decoded coefficient is negative and the complement of two is considered to be the unsigned value. The signaled bits are read from low to high frequencies. . 11.11 Summary of the decoding process
322. The decoding process will be briefly summarized below. For details, reference is made to the above discussion and also to figures 3, 4, 5a, 5c, 5e, 5g, 5j, 5k, 5l, and 5m. The quantized spectral coefficients “x_ac_dec []” are silently decoded starting from the coefficient with the lowest frequency and continuing to the coefficient with the highest frequency. They are decoded by groups of two successive coefficients a, b joining a double tuple (a, b).
323. The decoded coefficients “x_ac_dec []” for the frequency domain (ie, for a frequency domain mode) are then stored in the “x_ac_quant [g] [win] [sfb] [bin]” matrix. An order of transmission of the passwords for silent encryption is such that when they are decoded in the received order and stored in the matrix, “bin” is the index that increases more quickly and “g” is the index that increases more slowly. Within a password, a decryption order is a, then b. The decoded coefficients “x_ac_dec []” for “TCX” (that is, for an audio decoding that uses an encoding excitation by transformation) are stored (for example, directly) in the “x_tcx_invquant [win] [bin]” matrix and a The order of transmission of silent encryption passwords is such that when they are decoded in the order received and stored in the matrix, “bin” is the index that increases most quickly and “win” is the index that increases most slowly. Within a password, the decryption order is a, then b.
324. First, the “arith_reset_flag” indicator determines whether the context should be redefined. If the indicator is true, this is considered in the “arith_map_context” function.
325. The decoding process begins with an initialization phase where the vector of the context element “q” is updated by copying and mapping the context elements of the previous structure stored in “q [1] []” in “q [0] [] ”. The context elements inside “q” are stored in a 4 bits by 2 tuples. For details, reference is made to the pseudo-program code in figure 5a.
326. The silent decoder emits 2 tuples of unspecified quantized spectral coefficients. First, the state c of the context is calculated based on the spectral coefficients previously decoded around the double tuple to decode. In this way, the state is additionally updated using the context state of the last decoded double tuple considering only two new double tuples. The state is decoded into 17 bits and is returned by the “arith_get_context” function. A representation of the pseudo-program code for the “arith_get_context” function is shown in figure 5c.
327. The context state c determines the cumulative frequency table used to decode the most significant bitwise plane m. The mapping of c to the index of the corresponding cumulative frequency table “pki” is performed by a function “arith_get_pk ()”. A representation of the pseudo-program code for the “arith_get_pk ()” function is shown in figure 5e.
328. The m value is decoded using the “arith_decode ()” function called with the cumulative frequency table, “arith_cf_m [ki] []”, where “pki” corresponds to the index returned by “arith_get_pk ()”. The arithmetic encoder (and decoder) is an implementation of the integer using a scaled identification generation method. The pseudo-program code according to figure 5g describes the algorithm used.
329. When the decoded value m is the escape symbol “ARITH_ESCAPE”, the variables “lev” and “esc_nb” are increased by 1 and another value m is decoded. In this case, the “get_pk ()” function is called once again with the value “c + esc_nb << 17” as an input argument, where “esc_nb” is the number of escape symbols previously decoded for the same double delimited tuple to 7.
330. Since the value m is not the “ARITH_ESCAPE” escape symbol, the decoder checks whether the successive m forms an “ARITH_STOP” symbol. If the condition “(esc_nb> 0 && m == 0)” is true, the symbol “ARITH_STOP” is detected and the decoding process is ended. The decoder goes directly to the signal decoding described later. The condition means that the rest of the structure is made up of 0 values.
331. If the “ARITH_STOP” symbol is not found, the remaining bit planes are then decoded, if any, for the present double tuple. The remaining bit planes are decoded from the most significant to the least significant level, calling "arith_decode ()" several times with the cumulative frequency table "arith_cf_r []". The decoded bit planes r allow refining the previously decoded value m, according to the algorithm of a pseudo-program code that is shown in figure 5j. At this point, the unsigned value of the double tuple (a, b) is completely decoded. A representation of the pseudo-program code that is shown in figure 5k is saved in the element that maintains the spectral coefficients according to the algorithm.
332. The “q” context is also updated to the next double tuple. It should be noted that this context update must also be performed for the last double tuple. This context update is performed by the function “arith_update_context ()”, a representation of the pseudo-program code that is shown in figure 5l.
333. The next double tuple of the structure is then decoded by increasing i by 1 and redoing the same process as described above, starting with the function “arith_get_context ()”. When the 2 lg / 2 tuples are decoded within the structure, or when the stop symbol “ARITH_STOP” occurs, the spectral amplitude decoding process ends and the decoding of the signals begins.
334. Decoding is ended by calling an “arith_finish ()” function. The remaining spectral coefficients are set to 0. The respective context states are updated accordingly. A representation of the pseudo-program code for the “arith_finish” function is shown in figure 5m.
335. Since all non-signaled quantized spectral coefficients are decoded, the agreement signal is added. For each non-zero quantized value of “x_ac_dec”, a bit is read. If the reading bit value is equal to 0, the quantized value is positive, and nothing is done, and the signaled value is equal to the previously decoded unsigned signal. Otherwise, the decoded coefficient is negative and the complement of two is considered to be the unsigned value. The signaled bits are read from low to high frequencies. 11.12 Subtitles
336. Figure 5q shows a legend of the definitions that is related to the algorithms according to figures 5a, 5c, 5e, 5f, 5g, 5j, 5k, 5l, and 5m.
337. Figure 5r shows a legend of the definitions that is related to the algorithms according to figures 5b, 5d, 5f, 5h, 5i, 5n, 5o, and 5p. Mapping tables
338. In one embodiment, according to the invention, particularly advantageous tables "ari_lookup_m", "ari_hash_m", and "ari_cf_m" are used to perform the function "arith_get_pk ()" according to figure 5e or figure 5f, and for the execution of the function "arith_decode ()" as discussed with reference to figures 5g, 5h and 5i. However, it should be noted that different tables can be used in some embodiments according to the invention. 12.1 Table “ari hash m [600]” according to figure 22
339. The content of a particularly advantageous implementation of the “ari_hash_m” table, which is used by the “arith_get_pk” function, a first realization that has been described with reference to figure 5e, and a second realization that has been described with reference to figure 5f, is shown in the table in figure 22. It should be noted that the table in figure 22 lists the 600 entries in the table (or matrix) “ari_hash_m [600]”. It should also be noted that the table representation of figure 22 shows the elements in an order of the element index, so that the first value “0x000000100UL” corresponds to the table entry “ari_hash_m [0]” having an element index (or table index) 0, and so that the last value “0x7ffffffff4fUL” corresponds to the table entry “ari_hash_m [599]” having the element index or table index 599. It should still be noted here that “0x” indicates that the table entries in the “ari_hash_m []” table are represented in a hexadecimal format. In addition, it should be noted here that the suffix “UL” indicates that the table entries in the “ari_hash_m []” table are represented as unsigned “long” integer values (having a precision of 32 bits).
340. In addition, it should be noted that the table entries in the table “ari_hash_m []” according to figure 22 are arranged in a numerical order, in order to allow the search of the function table 506b, 508b, 510b "Arith_get_pk ()".
341. It should also be noted that the 24 most significant bits of the table entries in the “ari_hash_m” table represent certain significant state values, while the 8 least significant bits represent “pki” mapping rule index values. Thus, the entries in the “ari_hash_m []” table describe a “direct impact” mapping of a context value to a “pki” mapping rule index value.
342. However, the top 24 bits of the “ari_hash_m []” table entries represent, at the same time, range limits for numerical context values, in which the same mapping rule index value is associated. Details regarding this concept have already been discussed above. 12.2 “ari lookup m” table according to figure 21
343. A particularly advantageous content of the “ari_lookup_m” table is shown in the table in figure 21. It should be noted here that the table in figure 21 lists the entries in the “ari_lookup_m” table. Entries are referenced by a one-dimensional integer type entry index (also known as “element index” or “matrix index” or “table index”) which is, for example, designated as “i_max” or “i_min ”. It should be noted that the “ari_lookup_m” table, which comprises a total of 600 entries, is well suited for use by the “arith_get_pk” function according to figure 5e or figure 5f. It should also be noted that the table “ari_lookup_m” according to figure 21 is adapted to cooperate with the table “ari_hash_m” according to figure 22.
344. It should be noted that entries in the “ari_lookup_m [600]” table are listed in ascending order of the “i” table index (for example, “i_min” or “i_max”) between 0 and 599. The term “0x” indicates that table entries are described in a hexadecimal format. Thus, the first table entry “0x02” corresponds to the table entry “ari_lookup_m [0]” having the index of table 0 and the last table entry “0x5E” corresponds to the table entry “ari_lookup_m [599]” having the index from table 599.
345. It should also be noted that the entries in the “ari_lookup_m []” table are associated with the intervals defined by the adjacent entries in the “arith_hash_m []” table. Thus, the entries in the “ari_lookup_m” table describe mapping rule index values associated with the numeric context value ranges, where the ranges are defined by the “arith_hash_m” table entries. 12.3. Table “ari cf m [96] [17]” according to figure 23
346. Figure 23 shows a set of 96 cumulative frequency tables (or sub-tables) “ari_cf_m [ki] [17]”, one that is selected by audio encoder 100, 700 or an audio decoder 200, 800, for example, to execute the function "arith_decode ()", that is, to decode the most significant bit plane value. The one selected from the 96 cumulative frequency tables (or sub-tables) shown in figure 23 considers a function of the “cum_freq []” table when executing the “arith_decode ()” function.
347. As can be seen from figure 23, each sub-block represents the cumulative frequency table having 17 entries. For example, a first sub-block 2310 represents the 17 entries in the cumulative frequency table for “pki = 0”. A second sub-block 2312 represents the 17 entries in the cumulative frequency table for “pki = 1”. Finally, a 96 ° sub-block 2396 represents the 17 entries in the cumulative frequency table for “pki = 95”. Thus, figure 23 effectively represents 96 different cumulative frequency tables (or sub-tables) from “pki = 0” to “pki = 95”, where each of the 96 cumulative frequency tables is represented by a sub-block ( surrounded by rolled-up supports), and each of said cumulative frequency tables comprises 17 entries.
348. Within a sub-block (for example, a sub-block 2310 or 2312, or a sub-block 2396), a first value describes a first entry in the cumulative frequency table (having a matrix index or table index 0), and a last value describes a last entry in the cumulative frequency table (having a matrix index or table index of 16).
349. Thus, each sub-block 2310, 2312, 2396 of the table representation in figure 23 represents the cumulative frequency table entries for use by the “arith_decode” function according to figure 5g, or according to figures 5h and 5i. The input variable “cum_freq []” of the function “arith_decode” describes which of the 96 cumulative frequency tables (represented by the individual sub-blocks of 17 entries in the “arith_cf_m” table) should be used for decoding the current spectral coefficients. 12.4 Table “ari cf r []” according to figure 2 4
350. Figure 24 shows the contents of the table “ari_cf_r []”.
351. The four entries in said table are shown in figure 24. However, it should be noted that the table “ari_cf_r” may possibly be different in other realizations. Performance evaluation and advantages
352. The realizations, according to the invention, use the updated functions (or algorithms) and a set of updated tables, as discussed above, in order to obtain an improved disadvantage between computational complexity, memory requirement, and coding efficiency .
353. Generally speaking, the realizations according to the invention create an improved silent spectral coding. The embodiments, according to the present invention, describe an improvement of the silent spectral coding in USAC (unified audio and voice coding).
354. The realizations, according to the invention, create an updated proposal for CE in the improved silent spectral coding of spectral coefficients, based on the schemes as presented in the MPEG input papers m16912 and m17002. Both proposals were evaluated, potential results eliminated and the combined forces.
355. As in m16912 and m17002, the resulting proposal is based on the original context based on the arithmetic coding scheme such as the 5 USAC work design (the design pattern in unified audio and voice coding), but can significantly reduce the memory requirements (random access memory (RAM) and read-only memory (ROM)) without increasing computational complexity, while maintaining coding efficiency. In addition, lossless bit stream transcoding has been proven to be possible in accordance with USAC Design Standard work project 3 and in accordance with USAC Design Standard work project 5. The realizations, according to the invention, have the objective of replacing the spectral scheme of silent coding as used in work project 5 of the USAC Design Standard ...
356. The arithmetic coding scheme described here is based on the scheme as in reference model 0 (RM0) or work design 5 (WD) of the USAC Design Standard. The spectral coefficients in frequency or in time model a context. This context is used for the selection of cumulative frequency tables for the arithmetic encoder. Compared to work project 5 (WD), context modeling is further improved and the tables that maintain the symbol's probabilities have been retrained. The number of different probability models was increased from 32 to 96.
357. The achievements, according to the invention, reduce the size of the tables (data ROM demand) to 1518 words of 32 bits in length or 6072-bytes (WD 5: 16,894.5 words or 67,578-bytes). The demand for static RAM is reduced from 666 words (2,664 bytes) to 72 words (288 bytes) per channel of the core encoder. At the same time, it completely preserves the coding performance and can still achieve a gain of approximately 1.29 to 1.95% compared to the total data rate over all 9 operational points. All bit streams in working project 3 and working project 5 can be transcoded losslessly, without affecting the constraints of the bit reservoir.
358. In the following, a brief description of the coding concepts according to work design 5 of the USAC Design Standard will be provided to facilitate an understanding of the advantages of the concept described here. Subsequently, some preferred embodiments, according to the invention, will be described.
359. In work project 5 USAC, a context based on the arithmetic coding scheme is used for the silent coding of quantized spectral coefficients. As the context, the decoded spectral coefficients are used, which are previous in frequency and time. In work project 5, a maximum number of 16 spectral coefficients is used as a context, 12 of them being previous in time. In addition, the spectral coefficients used for the context and to be decoded, are grouped as sets of 4 tuples (ie, 4 spectral coefficients close to the frequency, see figure 14a). The context is reduced and mapped into a table of cumulative frequencies, which is then used to decode the next set of 4 tuples of spectral coefficients.
360. For the complete silent coding scheme of work project 5, a memory demand (read-only memory (ROM)) of 16894.5 words (67578 bytes) is required. In addition, 666 words (2664 bytes) of static RAM per channel from the core encoder are required to store states for the next structure. The table representation of figure 14b describes the tables as used in the USAC WD4 arithmetic coding scheme.
361. It should be noted here that with respect to silent coding, the working designs 4 and 5 of the USAC design standard are the same. Both use the same silent encoder.
362. A total memory demand for a complete USAC WD5 decoder is estimated at 37000 words (148000-byte) for data ROM without program code and 10,000 to 17000 words for static RAM. It can be clearly seen that the silent encoder tables consume approximately 45% of the total data ROM demand. The largest individual table already consumes 4096 words (16384-byte).
363. It has been observed that the size of the combination of all tables and the large individual tables exceeds the typical cache sizes as provided by fixed-point processors used in consumer portable devices, which is in a typical range of 8 to 32 Kbytes (for example, ARM9e, TI C64XX, etc.). This means that the set of tables can probably not be stored in the quick data RAM, which allows quick random access to the data. This makes the entire decoding process slow.
364. In addition, it was noted that the current audio coding technology successfully as HE-AAC has been approved to be implemented on most mobile devices. HE-AAC uses an entropy Huffman coding scheme with a table size of 995 words. For details, reference is made to ISO / IEC JTC1 / SC29 / WG11 N2005, MPEG98, February 1998, San Jose, “Revised Report on Complexity of MPEG-2 AAC2”.
365. At the 90th MPEG Meeting, in MPEG input papers m16912 and m17002, two proposals were presented whose aim is to reduce memory requirements and improve the coding efficiency of the silent coding scheme. Analyzing both proposals, the following conclusions could be considered.
366. A significant reduction in memory demand is possible by reducing the password length. As shown in the MPEG entry document m17002, by reducing the size of sets of 4 tuples to sets of 1 tuple, the memory demand could be reduced from 16984.5 to 900 words without violating coding efficiency; and
367. The additional redundancy could be removed by applying a code book from the non-uniform probability distribution to the LSB encoding, instead of using the uniform probability distribution.
368. In the course of these evaluations, it was identified that the movement from a coding scheme of a set of 4 tuples to a set of 1 tuple, had a significant impact on computational complexity: a reduction in the coding dimension increases by the same factor than the number of symbols to encode. This means that in order to reduce the sets of 4 tuples to sets of 1 tuple, the operations necessary to determine the context, access the hash tables and decode the symbol must be performed four times more often than before. With a more sophisticated algorithm for a given context, this leads to an increase in computational complexity by a factor of 2.5 or x.xxPCU.
369. In the following, the proposed new scheme, in accordance with the embodiments of the present invention, will be briefly described.
370. To overcome the issue of memory consumption and computational complexity, an improved silent coding scheme is proposed to replace the scheme as in work project 5 (WD5). The main focus on development was placed on reducing memory demand, while maintaining compression efficiency and not increasing computational complexity. More specifically, the goal was to achieve a good tradeoff (or the best) in the multi-dimensional complexity space of compression performance, complexity and memory requirements.
371. The proposal for the new coding scheme borrows the main characteristic of the silent encoder WD5, namely the adaptation of the context. The context is derived using previously decoded spectral coefficients, as close as in WD5 to the past and present structure (where a structure can be considered as a part of the audio content). However, spectral coefficients are now encoded by combining two coefficients together to form a double tuple. Another difference remains in the fact that the spectral coefficients are now divided into three parts, the sign, the most significant bits or the most significant bit (MSBs) and the least significant bits or the least significant bit (LSBs). The signal is encoded regardless of the magnitude which is further divided into two parts, the most significant bits (or most significant bits) and the rest of the bits (or least significant bits), if any. The 2 tuples in which the magnitude of the two elements is less than or equal to 3 are encoded directly by encoding MSBs. Otherwise, an escape password is transmitted first to signal any additional bit planes. In the base version, the missing information, the LSBs and the signal, are both encoded using the uniform probability distribution. Alternatively, a different probability distribution can be used.
372. Reducing the size of the table is still possible, since: only probabilities for 17 symbols need to be stored: symbol {[0; +3], [0; +3]} + ESC; there is no need to store a grouping table (egroups, dgroups, dgvectors); the size of the hash table can be reduced by training.
373. In the following, some details regarding the coding of MSBs will be described. As already mentioned, one of the main differences between WD5 of the USAC Design Standard, a proposal submitted to the 90th MPEG Meeting and the current proposal is the dimension of the symbols. In WD5 of the USAC Design Standard, sets of 4 tuples were considered for context generation and silent coding. In a proposal submitted to the 90th MPEG Meeting, sets of 1 tuple were used instead of reducing the requirements of the ROM. During development, the 2 tuples were the most committed to reducing ROM requirements, without increasing computational complexity. Instead of considering four sets of 4 tuples for context innovation, four double tuples are now considered. As shown in figure 15a, three double tuples arise from the past structure (also referred to as a prior part of the audio content) and another one arises from the present structure (also referred to as the current part of the audio content).
374. The reduction in the size of the table is due to three main factors. First, only probabilities for 17 symbols need to be stored (ie, symbol {[0; +3], [0; +3]} + ESC). Grouping tables (that is, egroups, dgroups, and dgvectors) are no longer needed. Finally, the size of the hash table was reduced by carrying out appropriate training.
375. Although the dimension was reduced from four to two, the complexity was maintained in the WD5 range of the USAC Design Standard. It was obtained by simplifying both the generation of context and the access of the hash table.
376. The different simplifications and optimizations were made in such a way that the performance of the coding was not affected, and more slightly improved. It was obtained mainly by increasing the number of probability models from 32 to 96.
377. In the following, some details regarding the LSBs encoding will be described. LSBs are coded with a uniform probability distribution in some realizations. Compared to the USAC Design Standard WD5, LSBs are now considered within the 2 tuples instead of the 4 tuple sets.
378. In the following, some details regarding the signal encoding will be explained. The signal is encoded without using the arithmetic core encoder to reduce complexity. The signal is transmitted in 1 bit only when the corresponding magnitude is non-zero. 0 means a positive value and 1 means a negative value.
379. In the following, some details regarding the memory demand will be explained. The proposed new scheme shows a total ROM demand of a maximum of 1522.5 new words (6090- bytes). For details, reference is made to the table in figure 15b, which describes the tables as used in the proposed coding scheme. Compared to the ROM demand of the USAC Design Standard WD5 silent encoding scheme, the ROM demand is reduced to at least 15462 words (61848 bytes). It now ends in the same order of magnitude as the memory requirement required for the Huffman AAC decoder in HE-AAC (995 words or 3980-bytes). For details, reference is made to ISO / IEC JTC1 / SC29 / WG11 N2005, MPEG98, February 1998, San Jose, “Revised Report on Complexity of MPEG-2 AAC2”, and also to figure 16a. This reduces the entire ROM demand of the silent encoder to more than 92% and a complete USAC decoder from approximately 37000 words to approximately 21500 words, or to more than 41%. For details, reference is again made to figures 16a and 16b, where figure 16a shows a ROM demand for a silent encoding scheme as proposed, and for a silent encoding scheme according to WD4 of the USAC Design Standard, and where figure 16b shows a total data demand of the USAC decoder ROM according to the proposed scheme and in accordance with WD4 of the USAC Design Standard.
380. Also, the amount of information needed to derive context in the next structure (static ROM) is also reduced. In WD5 of the USAC Design Standard, the complete set of coefficients (a maximum of 1152 coefficients) with a resolution of typically 16 additional bits to a group index per set of 4 tuples of a 10-bit resolution required to be stored, which it adds up to 666 words (2664-bytes) per channel of the core encoder (complete WAC4 decoder USAC: approximately 10000 to 17000 words). The new scheme reduces the persistent information to only 2 bits per spectral coefficient, which adds up to 72 words (288-byte) in total per channel of the core encoder. The demand for static memory can be reduced to 594 words (2376-byte).
381. Below, some details regarding the possible increase in coding efficiency will be described. The efficiency of decoding the achievements, according to the new proposal, was compared with the bit streams of the reference quality according to the working design 3 (WD3) and WD5 of the USAC Design Standard. The comparison was performed using a transcoder, based on a decoder from the reference software. For details regarding said comparison of the silent coding according to WD3 or WD5 of the USAC Design Standard and the proposed coding scheme, reference is made to figure 17, which shows a schematic representation of a test arrangement for a comparison of the coding silent WD3 / 5 with the proposed coding scheme.
382. In addition, the memory demand in the achievements, according to the invention, was compared to the achievements according to WD3 (or WD5) of the USAC Design Standard.
383. Coding efficiency is not only maintained, but slightly increased. For details, reference is made to the table in figure 18, which shows a table representation of average bit rates produced by the WD3 arithmetic encoder (or a USAC audio encoder using a WD3 arithmetic encoder), and an audio encoder (by example, USAC audio encoder) according to an embodiment of the invention.
384. Details on average bit rates per operating mode can be found in the table in figure 18.
385. In addition, figure 19 shows a table representation of minimum and maximum levels of the bit reservoir for the arithmetic encoder WD3 (or an audio encoder using the arithmetic encoder WD3) and an audio encoder according to an embodiment of present invention.
386. In the following, some details regarding computational complexity will be described. Reducing the dimensionality of arithmetic coding generally leads to an increase in computational complexity. In fact, reducing the dimension by a factor of two will perform the arithmetic encoder routines twice.
387. However, it has been observed that this increase in complexity can be limited by several optimizations introduced in the proposed new coding scheme according to the realizations of the present invention. The generation of context has been greatly simplified in some embodiments according to the invention. For each double tuple, the context can be updated a lot from the last generated context. The odds are now stored in 14 bits instead of 16 bits, which avoids 64-bit operations during the decoding process. In addition, the mapping of the probability model has been greatly optimized in some realizations according to the invention. The worst case was drastically reduced and limited to 10 iterations instead of 95.
388. As a result, the computational complexity of the proposed silent coding scheme has been kept in the same range as in WD5. A “pen and paper” estimate was performed for different versions of the silent coding and is recorded in the table in figure 20. This shows that the new coding scheme is only approximately 13% less complex than a WD5 arithmetic encoder.
389. To summarize the above, it can be seen that realizations, in accordance with the present invention, provide a good trade-off between computational complexity, memory requirements and coding efficiency. 14. Bitstream syntax 14.1 Payloads of the silent spectral encoder
390. In the following, some details regarding the payloads of the silent spectral encoder will be described. In some embodiments, there are several different coding modes, for example, the “linear prediction domain” coding mode and the “frequency domain” coding mode. In the linear prediction domain coding mode, a noise form is performed based on a linear prediction analysis of the audio signal, and a signal in the form of noise is encoded in the frequency domain. In the frequency domain encoding mode, a noise form is performed based on a psychoacoustic analysis and a noise version of the audio content is encoded in the frequency domain.
391. Spectral coefficients of the "linear prediction domain" coded signal and the "frequency domain" coded signal are quantized by scale and then silently coded by an adaptive context-dependent arithmetic coding. The quantized coefficients are joined in 2 tuples before being transmitted from the lowest frequency to the highest frequency. Each double tuple is divided into a sign s, the most significant bitwise plane m, and one or more less significant bit planes r remaining (if any). The m-value is coded according to a context defined by the close spectral coefficients. In other words, m is coded according to the close coefficients. The remaining least significant bit planes r are encoded by entropy without considering the context. By means of m and r, the amplitude of these spectral coefficients can be reconstructed on the decoder side. For all non-zero symbols, the s signals are encoded outside the arithmetic encoder using 1 bit. In other words, the values m and r form the symbols of the arithmetic encoder. Finally, the s signals are encoded outside the arithmetic encoder using 1 bit per non-zero quantized coefficient.
392. A detailed procedure for arithmetic coding will be described here. 14.2 Syntax elements
393. In the following, the bit stream syntax of a bit stream that carries the arithmetically encoded spectral information will be described with reference to figures 6a to 6j.
394. Figure 6a shows a syntax representation of the USAC raw data block (“usac_raw_data_block ()”).
395. The USAC raw data block comprises one or more elements of a single channel (“single_channel_element ()”) and / or one or more elements of the channel pair (“channel_pair_element ()”).
396. Now with reference to figure 6b, the syntax of a single channel element is described. Single channel elements comprise a channel stream from the linear forecast domain (“lpd_channel_stream ()”) or a channel stream from the frequency domain (“fd_channel_stream ()”) depending on the core mode.
397. Figure 6c shows a syntax representation of an element of the channel pair. An element of the channel pair comprises code mode information (“core_mode0”, “core_mode1”). In addition, the channel pair element may comprise “ics_info ()” configuration information. Additionally, depending on the code mode information, the channel pair element comprises a channel stream from the linear forecast domain or a channel stream from the frequency domain associated with a first of the channels, and the channel pair element also it comprises a channel stream of the linear forecast domain or a channel stream of frequency domain associated with one second of the channels.
398. The configuration information "ics_info ()", a syntax representation that is shown in figure 6d, comprises several different items of configuration information, which are not of particular relevance to the present invention.
399. A frequency domain channel stream (“fd_channel_stream ()”), a syntax representation that is shown in figure 6e, comprises gain information (“global_gain”) and configuration information (“ics_info ()” ). In addition, the frequency domain channel stream comprises scale factor data (“scale_factor_data ()”), which describes scale factors used for scaling spectral values from different scale factor ranges, and which is applied, for example, the frequency multiplier 150 and the frequency multiplier 240. The frequency domain channel stream also comprises arithmetically encoded spectral data ("ac_spectral_data ()"), which represent arithmetically encoded spectral values.
400. The arithmetically encoded spectral data (“ac_spectral_data ()”), a syntax representation that is shown in figure 6f, comprises an optional arithmetic reset flag (“arith_reset_flag”), which is used to selectively redefine the context, as described above. In addition, arithmetically decoded spectral data comprises several blocks of arithmetic data (“arith_data”), which carry the arithmetically encoded spectral values. The structure of the arithmetically encoded data blocks depends on the number of frequency bands (represented by the variable “num_bands”) and also on the state of the arithmetic reset flag, as will be discussed below.
401. Next, the structure of the arithmetically encoded data block will be described with reference to figure 6g, which shows a syntax representation of said arithmetically encoded data blocks. The representation of data within the arithmetically encoded data block depends on the lg number of spectral values to be encoded, the status of the arithmetic reset flag and also the context, that is, the previously encoded spectral values.
402. The context for encoding the current set (for example, 2 tuples) of spectral values is determined according to the context determination algorithm shown in reference number 660. Details regarding the context determination algorithm have been explained above , referring to figures 5a and 5b. The arithmetically encoded data block comprises lg / 2 for password definition, each set of passwords representing different (for example, a double tuple) spectral values. A set of passwords comprises an arithmetic password “acod_m [ki] [m]” that represents a value of the most significant bit plane m of the spectral value tuple using between 1 and 20 bits. In addition, the password set comprises one or more “acod_r [r]” passwords if the spectral value tuple requires more bit planes than the most significant bit plane for correct representation. The password “acod_r [r]” represents a less significant bit plane using between 1 and 14 bits.
403. If, however, one or more less significant bit planes are needed (in addition to the most significant bit plane) for correct representation of spectral values, this is signaled using one or more escape arithmetic passwords (“ARITH_ESCAPE”). Thus, it can generally be said that for a spectral value, it is determined how many bit planes (the most significant bit plane and possibly one or more additional least significant bit planes) are needed. If one or more less significant bit planes are required, this is signaled by one or more escape arithmetic passwords “acod_m [ki] [ARITH_ESCAPE]”, which are encoded according to a currently selected cumulative frequency table, an index of cumulative frequency table that is given by the variable “pki”. In addition, the context is adapted, as can be seen in reference numbers 664, 662, if one or more escape arithmetic passwords are included in the bit stream. Following one or more escape arithmetic passwords, an arithmetic password “acod_m [ki] [m]” is included in the bit stream, as shown in reference number 663, where “pki” designates the currently valid index of the probability model (considering the adaptation of the context caused by the inclusion of the escape arithmetic passwords in consideration) and where m designates the value of the most significant bit plane of the spectral value to be encoded or decoded (where m is different from the password “ARITH_ESCAPE”) .
404. As discussed above, the presence of any less significant bit plane results in the presence of one or more “acod_r [r]” passwords, each representing 1 bit of a less significant bit plane of a first spectral value and each one that also represents 1 bit of a less significant bit plane of a second spectral value. One or more “acod_r [r]” passwords are encoded according to a corresponding cumulative frequency table, which can, for example, be constant and independent of context. However, different mechanisms for selecting the cumulative frequency table for decoding one or more “acod_r [r]” passwords are possible.
405. In addition, it should be noted that the context is updated after the encoding of each tuple of spectral values, as shown in reference number 668, so that the context is typically different from the encoding and decoding of two subsequent tuples of spectral values .
406. Figure 6i shows a legend of definitions and help elements that define the syntax of the arithmetically encoded data block.
407. In addition, an alternative syntax of the arithmetic data “arith_data ()” is shown in figure 6h, with a corresponding caption of definitions and help elements shown in figure 6j.
408. To summarize the above, a bit stream format has been described, which can be provided by the audio encoder 100 and which can be evaluated by the audio decoder 200. The bit stream of the arithmetically encoded spectral values is encoded so that fits the decoding algorithm discussed above.
409. In addition, it should generally be noted that encoding is the inverse operation of decoding, so that it can generally be assumed that the encoder performs a table query using the tables mentioned above, which is approximately inverse to the table query performed by decoder. Generally, it can be said that a person skilled in the art who knows the decoding algorithm and / or the desired bitstream syntax can easily design an arithmetic encoder, which provides the data defined in the bitstream syntax and needed by an arithmetic decoder. .
410. In addition, it should be noted that the mechanisms for determining the current numerical context value and for deriving a mapping rule index value may be identical in an audio encoder and an audio decoder, as it is typically desired that the audio decoder uses the same context as the audio encoder, so that the decoding is adapted to the encoding. 15. Implementation alternatives
411. Although some aspects have been described in the context of an apparatus, it is clear that these aspects also represent a description of the corresponding method, where a block or device corresponds to a method step or a characteristic of a method step. Equally, the aspects described in the context of a method step also represent a description of a corresponding block or item or characteristic of a corresponding device. Some or all steps of the method can be performed by (or using) a hardware device, such as a microprocessor, a programmable computer or an electronic circuit. In some embodiments, one or more of the most important steps in the method can be performed by such an apparatus.
412. The inventive encoded audio signal can be stored on a digital storage medium or it can be transmitted on a transmission medium such as a wireless transmission medium or a wired transmission medium such as the Internet.
413. Depending on certain implementation requirements, the realizations of the invention can be implemented in hardware or in software. The implementation can be carried out using a digital storage medium, for example, a floppy disk, a DVD, a Blue-Ray, a CD, a ROM, a PROM, an EPROM, an EEPROM or a FLASH memory, having control signals electrically legible stored in it, which cooperates (or is capable of cooperating) with a programmable computer system so that the respective method is carried out. In this way, the digital storage medium can be computer readable.
414. Some embodiments, according to the invention, comprise a data loader having electrically readable control signals, which can cooperate with a programmable computer system, so that one of the methods described here is performed.
415. Generally, the embodiments of the present invention can be implemented as a computer program product with a program code, the program code being operative to perform one of the methods when the computer program product operates on a computer. The program code can, for example, be stored in a machine-readable loader.
416. Other achievements include the computer program to perform one of the methods described here, stored in a machine-readable loader.
417. In other words, an embodiment of the inventive method is, therefore, a computer program having a program code to perform one of the methods described here, when the computer program operates on a computer.
418. Another realization of the inventive method is, in this way, a data loader (or a digital storage medium, or a computer-readable medium) that comprises, registered in it, the computer program for carrying out one of the methods described here. The data carrier, the digital storage medium or the registered medium are typically tangible and / or non-transitory.
419. Another embodiment of the inventive method is, in this way, a data stream or a sequence of signals that represents the computer program to perform one of the methods described here. The data stream or signal sequence can, for example, be configured to be transferred over a data communication connection, for example, over the Internet.
420. Another embodiment comprises a processing means, for example, a computer, or a programmable logic device, configured or adapted to perform one of the methods described here.
421. Another embodiment comprises a computer having the computer program installed on it to perform one of the methods described here.
422. Another embodiment, according to the invention, comprises an apparatus or system configured to transfer (for example, electronically or optically) a computer program to perform one of the methods described herein to a receiver. The receiver can, for example, be a computer, a mobile device, a memory device or the like. The apparatus or system may, for example, comprise a file server for transferring the computer program to the receiver.
423. In some embodiments, a programmable logic device (for example, an array of field programmable gates) can be used to perform some or all of the functionality of the methods described here. In some embodiments, an array of programmable ports in the field can cooperate with a microprocessor in order to perform one of the methods described here. Generally, the methods are preferably performed by any hardware device.
424. The embodiments described above are merely illustrative for the principles of the present invention. It is understood that the changes and variations of the provisions and the details described here will be evident to other technicians in the subject. It is the objective, therefore, to be limited only by the scope of the impending patent claims and not by the specific details presented in the form of a description and explanation of the achievements here. 16. Conclusions
425. To conclude, the embodiments according to the invention comprise one or more of the following aspects, in which the aspects can be used individually or in combination. Hashing context engine state
426. According to one aspect of the invention, states in the hash table are considered to be significant states and group boundaries. This allows you to significantly reduce the size of the required tables. Additional context update
427. According to one aspect, some embodiments, according to the invention, comprise a computationally efficient way to update the context. Some realizations use an additional context update in which a current numeric context value is derived from a previous numeric context value. Derivation of context
428. According to one aspect of the invention, using a sum of two spectral absolute values is the association of a truncation. It is a type of quantization of the gain vector of the spectral coefficients (as opposed to the quantization of the conventional gain vector). It aims to limit the order of the context, while carrying the most significant information of the next.
429. Other technologies, which are applied in the embodiments, according to the invention, are described in unpublished patent applications PCT EP2101 / 065725, PCT EP2010 / 065726, and PCT EP 2010/065727. In addition, in some embodiments, according to the invention, a stop symbol is used. In addition, in some embodiments, only unsigned values are considered for context.
430. However, unpublished International patent applications reveal aspects that are still in some embodiments according to the invention.
431. For example, a zero region identification is used in some embodiments of the invention. Thus, the so-called “small value indicator” is defined (for example, bit 16 of the current numeric context value c).
432. In some embodiments, the region-dependent context calculation can be used. However, in other embodiments, a region-dependent context calculation can be omitted in order to keep the complexity and size of the tables reasonably small.
433. In addition, the hashing context using a hash function is an important aspect of the invention. The hashing context can be based on the concept of two tables that is described in the unpublished International patent applications referenced above. However, specific adaptations of the hashing context can be used in some realizations in order to increase computational efficiency. However, in other embodiments, according to the invention, the hashing context that is described in the unpublished International patent applications referenced above can be used.
434. In addition, it should be noted that the additional hashing context is quite simple and computationally efficient. In addition, the context independence of the value signals, which is used in some embodiments of the invention, helps to simplify the context, thereby keeping memory requirements reasonably low.
435. In some embodiments of the invention, a context derivation using a sum of two spectral values and a context limitation is used. These two aspects can be combined. Both aim to limit the context order by carrying the most significant information from the next.
436. In some embodiments, a small value indicator is used that can be similar to an identification of a group of several zero values.
437. In some embodiments, according to the invention, an arithmetic stop mechanism is used. The concept is similar to the use of a JPEG “end of the block” symbol, which has a comparable function. However, in some embodiments of the invention, the symbol ("ARITH_STOP") is not explicitly included in the entropy encoder. Also, a combination of existing symbols, which could not have occurred previously, is used, that is, “ESC + 0”. In other words, the audio decoder is configured to detect a combination of existing symbols, which are not normally used to represent a numerical value, and to interpret the occurrence of such a combination of existing symbols as an arithmetic stop condition.
438. An embodiment according to the invention uses a two-table context hashing mechanism.
439. To summarize, some embodiments, according to the invention, may comprise one or more of the four main aspects: extended context for detecting both zero regions and small amplitude regions in the next; hashing context; generation of the context state: additional update of the context state; and context derivation: specific quantization of context values including the sum of amplitudes and limitation.
440. To conclude, one aspect of the achievements in accordance with the present invention remains in an additional contextual update. The achievements, according to the invention, comprise an efficient concept for updating the context, which avoids extensive calculations of the work project (for example, work project 5). Still, simple change operations and logical operations are used in some realizations. The simple context update significantly facilitates the calculation of the context.
441. In some embodiments, the context is independent of the sign of the values (for example, the decoded spectral values). This independence of the context from the sign of the values brings with it a reduced complexity of the variable context. This concept is based on the observation that a denial of the signal in the context does not bring with it a severe degradation of the coding efficiency.
442. According to one aspect of the invention, the context is derived using the sum of two spectral values. Thus, memory requirements for context storage are significantly reduced. Thus, the use of a context value, which represents the sum of two spectral values, can be considered as advantageous in some cases.
443. In addition, limiting the context brings a significant improvement in some cases. In addition to the derivation of the context using the sum of two spectral values, the matrix of the context entries “q” are limited to the maximum value of “0xF” in some realizations, which in turn results in a limitation of the memory requirements. This limitation of the matrix of the values of the matrix context “q” brings with it some advantages.
444. In some embodiments, the so-called “small value indicator” is used. When obtaining the variable context c (which is also referred to as a current numeric context value), an indicator is set if the values of some inputs “q [1] [i-3]” to “q [1] [i- 1] ”are too small. Thus, the context calculation can be performed with high efficiency. Particularly significant context values (for example, current numeric context value) can be obtained.
445. In some embodiments, an arithmetic stop mechanism is used. The “ARITH_STOP” mechanism allows an efficient stop of the arithmetic encoding or decoding if there are only zero values left. Thus, the efficiency of coding can be improved at moderate costs in terms of complexity.
446. According to one aspect of the invention, a two-table hashing context mechanism is used. Context mapping is performed using an interval-splitting algorithm that evaluates the “ari_hash_m” table in combination with an evaluation of the subsequent lookup table from the “ari_lookup_m” table. This algorithm is more efficient than the WD3 algorithm.
447. In the following, some additional details will be discussed.
448. It should be noted here that the “arith_hash_m [600]” and “arith_lookup_m [600]” tables are two separate tables. The first is used to map a single context index (for example, numerical context value) to the probability model index (for example, mapping rule index value) and the second is used to map a group of consecutive contexts , delimited by the context indexes in “arith_hash_m []”, in the only probability model.
449. It should also be noted that the table “arith_cf_msb [96] [16]” can be used as an alternative to the table “ari_cf_m [96] [17]”, although the dimensions are slightly different. “Ari_cf_m [] []” and “ari_cf_msb [] []” can refer to the same table, as the 17th coefficients of the probability model are always zero. Sometimes it is not taken into account when counting the space needed to store the tables.
450. To summarize the aforementioned, some achievements, according to the invention, provide a new proposed silent coding (encoding or decoding), which generates changes in the USAC MPEG work project (for example, in the USAC MPEG 5 work project) . Said modifications can be seen in the attached figures and also in the related description.
451. As a conclusion mark, it should be noted that the prefix “ari” and the prefix “arith” in the names of variables, matrices, functions, and so on, are used interchangeably.
权利要求:
Claims (16)
[0001]
1. AUDIO DECODER (200; 800) TO PROVIDE DECODED AUDIO INFORMATION (212; 812) BASED ON ENCODED AUDIO INFORMATION (210; 810), the audio decoder being characterized by comprising: an arithmetic decoder (230 ; 820) to provide several decoded spectral values (232; 822) based on an arithmetically encoded representation (222; 821) of the spectral values contained in the encoded audio information (210; 810); and a time domain frequency converter (260; 830) to provide a time domain audio representation (262; 812) using the decoded spectral values (232; 822), to obtain the decoded audio information ( 212; 812); where the arithmetic decoder (230; 820) is configured to select a mapping rule (297; cum_freq []) that describes a mapping of a code value (acod_m, value) of the arithmetically encoded representation (821) of spectral values in a symbol code (symbol) representing one or more of the decoded spectral values or at least part of one or more of the decoded spectral values depending on a context state described by a current numeric context value (c); and wherein the arithmetic decoder (230; 820) is configured to determine the current numerical context value (c) depending on several previously decoded spectral values; where the arithmetic decoder is configured to obtain different values of context sub-region (q [OJ [i — 1], q [0] [i], q [0] [i + 1], q [1] [ i-1]) that describe sub-regions of the context based on previously decoded spectral values and to store said values of context sub-region; where the arithmetic decoder is configured to derive a current numeric context value (c) associated with one or more spectral values to be decoded depending on the stored context subregion values (q [0] [i — 1], q [0] [i], q [0] [i + 1], q [l] [i-1]); in which the arithmetic decoder is configured to compute the norm of a vector formed by several previously decoded spectral values (a, b), to obtain a common context sub-region value (q [l] [i]) associated with the various spectral values previously decoded.
[0002]
2. AUDIO DECODER, according to claim 1, characterized in that the arithmetic decoder is configured to sum up absolute values of several previously decoded spectral values, which are associated with adjacent frequency bins of the frequency domain converter in time domain and to a common temporal part of the audio information, to obtain the value of the common context sub-region associated with the various spectral values previously decoded.
[0003]
3. AUDIO DECODER, according to claim 1, characterized in that the arithmetic decoder is configured to quantize the norm of several spectral values previously decoded, which are associated with adjacent frequency bins of the frequency domain converter in time domain and to a common temporal part of the audio information, to obtain the value of the common context sub-region associated with the various spectral values previously decoded.
[0004]
4. AUDIO DECODER, according to one of claims 1 to 3, characterized in that the arithmetic decoder is configured to sum up absolute values of several previously decoded spectral values (a, b), which are encoded using a common code value (acod_m , value), to obtain the common context sub-region value associated with the various spectral values previously decoded.
[0005]
5. AUDIO DECODER according to one of claims 1 to 4, characterized in that the arithmetic decoder is configured to provide signaled decoded spectral values for the time domain frequency converter, and to add absolute values corresponding to the spectral values signaled decoded to obtain the common context sub-region value associated with the various spectral values previously decoded.
[0006]
6. AUDIO DECODER according to one of claims 1 to 5, characterized in that the arithmetic decoder is configured to derive a limited sum value from a sum of absolute values of previously decoded spectral values, so that a range of possible values represented by the limited sum value is less than a range of possible sum values. claims 1 to 6, characterized in that the arithmetic decoder is configured to obtain a current numerical context value (c) depending on various values of context sub-region (q [0] [i — 1], q [0], [ i], q [0] [i + 1], q [l] [i-1]) associated with different sets of spectral values previously decoded.
[0007]
8. AUDIO DECODER according to claim 7, characterized in that the arithmetic decoder is configured to obtain a numerical representation of a current numerical context value (c), so that a first part of the numerical representation of the current context value numeric is determined by a first sum value or limited sum value of absolute values of several spectral values previously decoded, and so that a second part of the numerical representation of the current numerical context value is determined by a second sum value or value limited sum of absolute values of several spectral values previously decoded.
[0008]
9. AUDIO DECODER, according to claim 7 or claim 8, wherein the arithmetic decoder is configured to obtain the current numerical context value (c) so that a first sum value or limited sum value of absolute values of several previously decoded spectral values and a second sum value or limited sum value of absolute values of several previously decoded spectral values are characterized by comprising different weights in the current numerical context value (c).
[0009]
10. AUDIO DECODER, according to claims 7 to 9, characterized in that the arithmetic decoder is configured to modify the numerical representation of a numerical previous context value (c), which describes a context state associated with one or more previously decoded spectral values, depending on a sum value or a limited sum value (q [l] [i-1]) of absolute values of several previously decoded spectral values, to obtain a numerical representation of a current context value numeric (c) that describes a context state associated with one or more spectral values to be decoded.
[0010]
11. AUDIO DECODER according to one of claims 1 to 10, characterized in that the arithmetic decoder is configured to verify that a sum of several values of context sub-region (q [l] [i — 3], q [ l] [i — 2], q [l] ti-ll) is less than or equal to a predetermined sum threshold value, and to selectively modify the current numerical context value (c) depending on a verification result, where each of the context subregion values (q [l] [i — 3], q [l] [i — 2], q [l] [i-1]) is a sum value or a value of limited sum of absolute values of several associated previously decoded spectral values.
[0011]
12. AUDIO DECODER, according to one of claims 1 to 11, characterized in that the arithmetic decoder is configured to take into account different values of context sub-region (q [0] [i — 3], q [0] [i ], q [0] [i + 1]) defined by previously decoded spectral values associated with a previous temporal portion of the audio content, and also to consider at least one context subregion value <q [l] [i - 1]) defined by previously decoded spectral values associated with a current temporal part of the audio content, to obtain a numerical current context value (c) associated with one or more spectral values to be decoded and associated with the current temporal part of the content audio, so that an environment of both previously decoded spectral values temporarily adjacent to the previous temporal part and the previously decoded spectral values adjacent to the frequency of the current temporal part are considered to obtain the ov current numerical context value (c).
[0012]
13. AUDIO DECODER according to one of claims 1 to 12, characterized in that the arithmetic decoder is configured to store a set of context sub-region values, each of the context sub-region values being a value of sum or limited sum value of absolute values of several previously decoded spectral values, for a given time portion of the audio information, and to use the values of context subregion to derive a current numeric context value (c) for decoding of one or more spectral values of a temporal part of the audio information following the determined temporal part of the audio information while leaving the individual spectral values previously decoded for the determined temporal part of the audio information not taken into account when deriving the current numerical context value (ç).
[0013]
AUDIO DECODER according to one of claims 1 to 13, characterized in that the arithmetic decoder is configured to separately decode a magnitude value and a signal of a spectral value, and in which the arithmetic decoder is configured to leave signals from previously decoded spectral values not taken into account when determining the current numerical context state (c) for decoding a spectral value to be decoded.
[0014]
15. AUDIO ENCODER (100; 700) TO PROVIDE ENCODED AUDIO INFORMATION (112; 712) BASED ON INPUT AUDIO INFORMATION (110; 710), the audio encoder being characterized by comprising: a domain converter frequency domain time with energy compression (130; 720) to provide a frequency domain audio representation (132; 722) based on a time domain representation (110; 710) of the input audio information , so that the audio representation of frequency domain (132; 722) comprises a set of spectral values; and an arithmetic encoder (170; 730) configured to encode a spectral value (a) or a pre-processed version of it, using a variable length password (acod_m, acod_r), where the arithmetic encoder is configured to map a spectral value (a), or a value (m) of a more significant bit plane of a spectral value (a), in a code value (acod_m), where the encoded audio information comprises several passwords of variable length, where the arithmetic encoder is configured to select a mapping rule that describes a mapping of one or more spectral values, or a more significant bit plane of one or more spectral values, to a code value, depending on a state of context ( s) described by a current numeric context value (c); and where the arithmetic encoder is configured to determine the current numerical context value (c) depending on several spectral values previously encoded, where the arithmetic encoder is configured to obtain different values of context subregion (q [] [] ) that describe context sub-regions based on previously encoded spectral values, to store said context sub-region values, and to derive a current numerical context value (c), associated with one or more spectral values to be coded, depending on the stored context subregion values, where the arithmetic encoder is configured to compute the norm of a vector formed by several previously encoded spectral values, to obtain a common context subregion value associated with the various values previously coded spectral data.
[0015]
16. METHOD TO PROVIDE DECODED AUDIO INFORMATION BASED ON ENCODED AUDIO INFORMATION, the method being characterized by comprising: provision of several decoded spectral values based on an arithmetically encoded representation of the spectral values contained in the encoded audio information; and providing a time domain audio representation using the decoded spectral values, to obtain the decoded audio information; in which the provision of the various decoded spectral values comprises the selection of a mapping rule that describes a mapping of a code value (acod_m; value) of the arithmetically encoded representation (821) of spectral values into a symbol code (symbol) representing one or more of the decoded spectral values, or a more significant bit plane of one or more of the decoded spectral values depending on a context state described by a current numeric context value (c); and wherein the current numerical context value (c) is determined depending on several spectral values previously decoded; where several values of context subregions that describe subregions of the context are obtained based on previously decoded and stored spectral values; wherein a current numerical context value (c) associated with one or more spectral values to be decoded is derived depending on the stored context subregion values; and where a norm (a + b) of a vector formed by several previously decoded spectral values is computed, to obtain a common context subregion value (q [l] [i]) associated with the different previously decoded spectral values (a, b).
[0016]
17. METHOD FOR PROVIDING ENCODED AUDIO INFORMATION BASED ON INPUT AUDIO INFORMATION, the method being characterized by comprising: provision of a frequency domain audio representation based on a time domain representation of the audio information input using a time domain to frequency domain conversion with energy compression, so that the audio representation of the frequency domain comprises a set of spectral values; and arithmetic encoding of a spectral value, or a preprocessed version of it, using a variable length password, in which a spectral value or a bit plane value more significant than a spectral value is mapped to a code value; where the mapping rule describing a mapping of one or more spectral values, or a more significant bit plane of one or more spectral values, in a code value is selected depending on a context state described by a value of current numerical context (c); wherein a current numerical context value (c) is determined depending on several adjacent spectral values previously encoded; where several context sub-region values describing context sub-regions are obtained based on previously encoded spectral values, where a current numerical context value (c) associated with one or more spectral values to be encoded is derived depending on the stored context subregion values (q [0] [i — 1], q [0] [i], q [0] [i + 1], q [l] [i-1]); and where a norm of a vector formed by several previously encoded spectral values is computed to obtain a common context subregion value (q [l] [i]) associated with the various previously encoded spectral values; wherein the encoded audio information comprises several passwords of varying length.
类似技术:
公开号 | 公开日 | 专利标题
BR112012017258B1|2020-12-29|audio encoder, audio decoder, method of encoding and decoding an audio information, to obtain a context subregion value based on a previously decoded spectral value standard
ES2454020T3|2014-04-09|Audio encoder, audio decoder, procedure to encode audio information, procedure and computer program using a region-dependent rule for mapping by arithmetic coding
ES2828429T3|2021-05-26|Audio decoder, audio decoding procedure and computer program
RU2574848C2|2016-02-10|Audio encoder, audio decoder, method of encoding audio information, method of decoding audio information and computer programme using hash table describing significant state values and interval boundaries
同族专利:
公开号 | 公开日
SG182464A1|2012-08-30|
ZA201205938B|2013-05-29|
WO2011086065A1|2011-07-21|
AU2011206675B2|2014-07-10|
TW201145261A|2011-12-16|
MY159982A|2017-02-15|
US20130013301A1|2013-01-10|
BR112012017256A2|2020-08-25|
ES2615891T3|2017-06-08|
TWI466103B|2014-12-21|
AR079888A1|2012-02-29|
JP5622865B2|2014-11-12|
WO2011086066A1|2011-07-21|
EP2524371A1|2012-11-21|
AU2011206675A1|2012-08-09|
KR101339058B1|2013-12-10|
ZA201205936B|2013-05-29|
EP2524372A1|2012-11-21|
AU2011206675C1|2016-04-28|
US20130013323A1|2013-01-10|
MY160067A|2017-02-15|
TW201145260A|2011-12-16|
MX2012008075A|2013-12-16|
AU2011206677B2|2014-07-10|
RU2644141C2|2018-02-07|
EP2517200B1|2015-04-15|
HK1177649A1|2013-08-23|
TWI476757B|2015-03-11|
US8898068B2|2014-11-25|
CN102792370B|2014-08-06|
CA2786945A1|2011-07-21|
EP2524372B1|2015-01-14|
CA2786946A1|2011-07-21|
TW201145262A|2011-12-16|
CA2786946C|2016-03-22|
CA2786945C|2016-03-29|
MX2012008077A|2012-12-05|
BR112012017256B1|2021-08-31|
RU2012141243A|2015-08-10|
KR101339057B1|2013-12-10|
CN102859583A|2013-01-02|
JP2013517519A|2013-05-16|
SG182467A1|2012-08-30|
CA2786944A1|2011-07-21|
JP2013517521A|2013-05-16|
US9633664B2|2017-04-25|
JP5624159B2|2014-11-12|
AU2011206677B9|2014-12-11|
US20130013322A1|2013-01-10|
ES2536957T3|2015-06-01|
AU2011206676B2|2014-07-17|
CN102859583B|2014-09-10|
WO2011086067A1|2011-07-21|
PL2517200T3|2015-10-30|
AU2011206677B8|2014-12-11|
CN102844809B|2015-02-18|
AR079887A1|2012-02-29|
AR079886A1|2012-02-29|
ES2532203T3|2015-03-25|
CN102792370A|2012-11-21|
PL2524372T3|2015-08-31|
CA2786944C|2016-03-15|
US8682681B2|2014-03-25|
US20150081312A1|2015-03-19|
KR20120109621A|2012-10-08|
RU2012141241A|2015-03-27|
AU2011206677A1|2012-08-09|
TWI466104B|2014-12-21|
EP2517200A1|2012-10-31|
PT2524371T|2017-03-15|
AU2011206676A1|2012-08-09|
PL2524371T3|2017-06-30|
CN102844809A|2012-12-26|
US8645145B2|2014-02-04|
JP2013517520A|2013-05-16|
RU2628162C2|2017-08-15|
JP5773502B2|2015-09-02|
SG182466A1|2012-08-30|
ZA201205939B|2013-05-29|
KR20120128127A|2012-11-26|
MY153845A|2015-03-31|
EP2524371B1|2016-12-07|
MX2012008076A|2013-01-29|
KR101336051B1|2013-12-04|
HK1178306A1|2013-09-06|
KR20120109616A|2012-10-08|
RU2012141242A|2014-05-27|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题

US5222189A|1989-01-27|1993-06-22|Dolby Laboratories Licensing Corporation|Low time-delay transform coder, decoder, and encoder/decoder for high-quality audio|
US5388181A|1990-05-29|1995-02-07|Anderson; David J.|Digital audio compression system|
US5835792A|1993-06-24|1998-11-10|Discovision Associates|Token-based adaptive video processing arrangement|
US5659659A|1993-07-26|1997-08-19|Alaris, Inc.|Speech compressor using trellis encoding and linear prediction|
ZA947317B|1993-09-24|1995-05-10|Qualcomm Inc|Multirate serial viterbi decoder for code division multiple access system applications|
EP0880235A1|1996-02-08|1998-11-25|Matsushita Electric Industrial Co., Ltd.|Wide band audio signal encoder, wide band audio signal decoder, wide band audio signal encoder/decoder and wide band audio signal recording medium|
JP3305190B2|1996-03-11|2002-07-22|富士通株式会社|Data compression device and data decompression device|
US5721745A|1996-04-19|1998-02-24|General Electric Company|Parallel concatenated tail-biting convolutional code and decoder therefor|
US6269338B1|1996-10-10|2001-07-31|U.S. Philips Corporation|Data compression and expansion of an audio signal|
JP3367370B2|1997-03-14|2003-01-14|三菱電機株式会社|Adaptive coding method|
DE19730130C2|1997-07-14|2002-02-28|Fraunhofer Ges Forschung|Method for coding an audio signal|
KR100335609B1|1997-11-20|2002-10-04|삼성전자 주식회사|Scalable audio encoding/decoding method and apparatus|
KR100335611B1|1997-11-20|2002-10-09|삼성전자 주식회사|Scalable stereo audio encoding/decoding method and apparatus|
US6029126A|1998-06-30|2000-02-22|Microsoft Corporation|Scalable audio coder and decoder|
US6704705B1|1998-09-04|2004-03-09|Nortel Networks Limited|Perceptual audio coding|
DE19840835C2|1998-09-07|2003-01-09|Fraunhofer Ges Forschung|Apparatus and method for entropy coding information words and apparatus and method for decoding entropy coded information words|
RU2251819C2|1999-01-13|2005-05-10|Конинклейке Филипс Электроникс Н.В.|Inserting additional data in coded signal|
US6978236B1|1999-10-01|2005-12-20|Coding Technologies Ab|Efficient spectral envelope coding using variable time/frequency resolution and time/frequency switching|
US7260523B2|1999-12-21|2007-08-21|Texas Instruments Incorporated|Sub-band speech coding system|
US20020016161A1|2000-02-10|2002-02-07|Telefonaktiebolaget Lm Ericsson |Method and apparatus for compression of speech encoded parameters|
JP2001318698A|2000-05-10|2001-11-16|Nec Corp|Voice coder and voice decoder|
US6677869B2|2001-02-22|2004-01-13|Panasonic Communications Co., Ltd.|Arithmetic coding apparatus and image processing apparatus|
US6538583B1|2001-03-16|2003-03-25|Analog Devices, Inc.|Method and apparatus for context modeling|
CN1235192C|2001-06-28|2006-01-04|皇家菲利浦电子有限公司|Wideband signal transmission system|
US20030093451A1|2001-09-21|2003-05-15|International Business Machines Corporation|Reversible arithmetic coding for quantum data compression|
JP2003255999A|2002-03-06|2003-09-10|Toshiba Corp|Variable speed reproducing device for encoded digital audio signal|
JP4090862B2|2002-04-26|2008-05-28|松下電器産業株式会社|Variable length encoding method and variable length decoding method|
AT343302T|2002-05-02|2006-11-15|Fraunhofer Ges Forschung|CODING AND DECODING TRANSFORMATION COEFFICIENTS IN PICTURE OR VIDEO CODERS|
US7242713B2|2002-05-02|2007-07-10|Microsoft Corporation|2-D transforms for image and video coding|
GB2388502A|2002-05-10|2003-11-12|Chris Dunn|Compression of frequency domain audio signals|
US7447631B2|2002-06-17|2008-11-04|Dolby Laboratories Licensing Corporation|Audio coding system using spectral hole filling|
DE60327039D1|2002-07-19|2009-05-20|Nec Corp|AUDIO DEODICATION DEVICE, DECODING METHOD AND PROGRAM|
DE10236694A1|2002-08-09|2004-02-26|Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V.|Equipment for scalable coding and decoding of spectral values of signal containing audio and/or video information by splitting signal binary spectral values into two partial scaling layers|
EP1734511B1|2002-09-04|2009-11-18|Microsoft Corporation|Entropy coding by adapting coding between level and run-length/level modes|
US7299190B2|2002-09-04|2007-11-20|Microsoft Corporation|Quantization and inverse quantization for audio|
US7328150B2|2002-09-04|2008-02-05|Microsoft Corporation|Innovations in pure lossless audio compression|
KR101129655B1|2002-09-17|2012-03-28|블라디미르 세페르코빅|Fast codec with high compression ratio and minimum required resources|
FR2846179B1|2002-10-21|2005-02-04|Medialive|ADAPTIVE AND PROGRESSIVE STRIP OF AUDIO STREAMS|
US6646578B1|2002-11-22|2003-11-11|Ub Video Inc.|Context adaptive variable length decoding system and method|
US7876966B2|2003-03-11|2011-01-25|Spyder Navigations L.L.C.|Switching between coding schemes|
US6900748B2|2003-07-17|2005-05-31|Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V.|Method and apparatus for binarization and arithmetic coding of a data value|
US7562145B2|2003-08-28|2009-07-14|International Business Machines Corporation|Application instance level workload distribution affinities|
JP2005130099A|2003-10-22|2005-05-19|Matsushita Electric Ind Co Ltd|Arithmetic decoding device, arithmetic encoding device, arithmetic encoding/decoding device, portable terminal equipment, moving image photographing device, and moving image recording/reproducing device|
JP2005184232A|2003-12-17|2005-07-07|Sony Corp|Coder, program, and data processing method|
JP4241417B2|2004-02-04|2009-03-18|日本ビクター株式会社|Arithmetic decoding device and arithmetic decoding program|
DE102004007200B3|2004-02-13|2005-08-11|Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V.|Device for audio encoding has device for using filter to obtain scaled, filtered audio value, device for quantizing it to obtain block of quantized, scaled, filtered audio values and device for including information in coded signal|
CA2457988A1|2004-02-18|2005-08-18|Voiceage Corporation|Methods and devices for audio compression based on acelp/tcx coding and multi-rate lattice vector quantization|
US7516064B2|2004-02-19|2009-04-07|Dolby Laboratories Licensing Corporation|Adaptive hybrid transform for signal analysis and synthesis|
KR20050087956A|2004-02-27|2005-09-01|삼성전자주식회사|Lossless audio decoding/encoding method and apparatus|
DE602005022641D1|2004-03-01|2010-09-09|Dolby Lab Licensing Corp|Multi-channel audio decoding|
US20090299756A1|2004-03-01|2009-12-03|Dolby Laboratories Licensing Corporation|Ratio of speech to non-speech audio such as for elderly or hearing-impaired listeners|
KR100561869B1|2004-03-10|2006-03-17|삼성전자주식회사|Lossless audio decoding/encoding method and apparatus|
US7577844B2|2004-03-17|2009-08-18|Microsoft Corporation|Systems and methods for encoding randomly distributed features in an object|
WO2006006936A1|2004-07-14|2006-01-19|Agency For Science, Technology And Research|Context-based encoding and decoding of signals|
KR100624432B1|2004-08-05|2006-09-19|삼성전자주식회사|Context adaptive binary arithmetic decoder method and apparatus|
WO2006036442A2|2004-08-31|2006-04-06|Gopalakrishnan Kumar|Method and system for providing information services relevant to visual imagery|
EP2752849B1|2004-11-05|2020-06-03|Panasonic Intellectual Property Management Co., Ltd.|Encoder and encoding method|
US7903824B2|2005-01-10|2011-03-08|Agere Systems Inc.|Compact side information for parametric coding of spatial audio|
KR100829558B1|2005-01-12|2008-05-14|삼성전자주식회사|Scalable audio data arithmetic decoding method and apparatus, and method for truncating audio data bitstream|
EP1836858A1|2005-01-14|2007-09-26|Sungkyunkwan University|Methods of and apparatuses for adaptive entropy encoding and adaptive entropy decoding for scalable video encoding|
TWI319565B|2005-04-01|2010-01-11|Qualcomm Inc|Methods, and apparatus for generating highband excitation signal|
KR100694098B1|2005-04-04|2007-03-12|한국과학기술원|Arithmetic decoding method and apparatus using the same|
KR100703773B1|2005-04-13|2007-04-06|삼성전자주식회사|Method and apparatus for entropy coding and decoding, with improved coding efficiency, and method and apparatus for video coding and decoding including the same|
US7991610B2|2005-04-13|2011-08-02|Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V.|Adaptive grouping of parameters for enhanced coding efficiency|
US7196641B2|2005-04-26|2007-03-27|Gen Dow Huang|System and method for audio data compression and decompression using discrete wavelet transform |
US7539612B2|2005-07-15|2009-05-26|Microsoft Corporation|Coding and decoding scale factor information|
US7546240B2|2005-07-15|2009-06-09|Microsoft Corporation|Coding with improved time resolution for selected segments via adaptive block transformation of a group of samples from a subband decomposition|
US20070036228A1|2005-08-12|2007-02-15|Via Technologies Inc.|Method and apparatus for audio encoding and decoding|
JP2009510962A|2005-10-03|2009-03-12|ノキアコーポレイション|Adaptive variable length code for independent variables|
US20070094035A1|2005-10-21|2007-04-26|Nokia Corporation|Audio coding|
KR100803206B1|2005-11-11|2008-02-14|삼성전자주식회사|Apparatus and method for generating audio fingerprint and searching audio data|
EP1995974B1|2005-12-05|2015-05-20|Huawei Technologies Co., Ltd.|Method for realizing arithmetic coding|
WO2007066709A1|2005-12-07|2007-06-14|Sony Corporation|Encoding device, encoding method, encoding program, decoding device, decoding method, and decoding program|
KR101237413B1|2005-12-07|2013-02-26|삼성전자주식회사|Method and apparatus for encoding/decoding audio signal|
US7283073B2|2005-12-19|2007-10-16|Primax Electronics Ltd.|System for speeding up the arithmetic coding processing and method thereof|
WO2007080225A1|2006-01-09|2007-07-19|Nokia Corporation|Decoding of binaural audio signals|
WO2007080211A1|2006-01-09|2007-07-19|Nokia Corporation|Decoding of binaural audio signals|
KR100774585B1|2006-02-10|2007-11-09|삼성전자주식회사|Mehtod and apparatus for music retrieval using modulation spectrum|
US8027479B2|2006-06-02|2011-09-27|Coding Technologies Ab|Binaural multi-channel decoder in the context of non-energy conserving upmix rules|
US7948409B2|2006-06-05|2011-05-24|Mediatek Inc.|Automatic power control system for optical disc drive and method thereof|
EP1883067A1|2006-07-24|2008-01-30|Deutsche Thomson-Brandt Gmbh|Method and apparatus for lossless encoding of a source signal, using a lossy encoded data stream and a lossless extension data stream|
EP2054882B1|2006-08-15|2011-01-19|Dolby Laboratories Licensing Corporation|Arbitrary shaping of temporal noise envelope without side-information|
US7554468B2|2006-08-25|2009-06-30|Sony Computer Entertainment Inc,|Entropy decoding methods and apparatus using most probable and least probable signal cases|
JP4785706B2|2006-11-01|2011-10-05|キヤノン株式会社|Decoding device and decoding method|
US20080243518A1|2006-11-16|2008-10-02|Alexey Oraevsky|System And Method For Compressing And Reconstructing Audio Files|
DE102007017254B4|2006-11-16|2009-06-25|Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V.|Device for coding and decoding|
KR100868763B1|2006-12-04|2008-11-13|삼성전자주식회사|Method and apparatus for extracting Important Spectral Component of audio signal, and method and appartus for encoding/decoding audio signal using it|
US7365659B1|2006-12-06|2008-04-29|Silicon Image Gmbh|Method of context adaptive binary arithmetic coding and coding apparatus using the same|
CN101231850B|2007-01-23|2012-02-29|华为技术有限公司|Encoding/decoding device and method|
KR101365989B1|2007-03-08|2014-02-25|삼성전자주식회사|Apparatus and method and for entropy encoding and decoding based on tree structure|
JP2008289125A|2007-04-20|2008-11-27|Panasonic Corp|Arithmetic decoding apparatus and method thereof|
CN101809654B|2007-04-26|2013-08-07|杜比国际公司|Apparatus and method for synthesizing an output signal|
US7813567B2|2007-04-26|2010-10-12|Texas Instruments Incorporated|Method of CABAC significance MAP decoding suitable for use on VLIW data processors|
JP4748113B2|2007-06-04|2011-08-17|ソニー株式会社|Learning device, learning method, program, and recording medium|
EP2158587A4|2007-06-08|2010-06-02|Lg Electronics Inc|A method and an apparatus for processing an audio signal|
WO2008151755A1|2007-06-11|2008-12-18|Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V.|Audio encoder for encoding an audio signal having an impulse- like portion and stationary portion, encoding methods, decoder, decoding method; and encoded audio signal|
US8521540B2|2007-08-17|2013-08-27|Qualcomm Incorporated|Encoding and/or decoding digital signals using a permutation value|
US20110116542A1|2007-08-24|2011-05-19|France Telecom|Symbol plane encoding/decodingwith dynamic calculation of probability tables|
US7839311B2|2007-08-31|2010-11-23|Qualcomm Incorporated|Architecture for multi-stage decoding of a CABAC bitstream|
US7777654B2|2007-10-16|2010-08-17|Industrial Technology Research Institute|System and method for context-based adaptive binary arithematic encoding and decoding|
US8527265B2|2007-10-22|2013-09-03|Qualcomm Incorporated|Low-complexity encoding/decoding of quantized MDCT spectrum in scalable speech and audio codecs|
US8515767B2|2007-11-04|2013-08-20|Qualcomm Incorporated|Technique for encoding/decoding of codebook indices for quantized MDCT spectrum in scalable speech and audio codecs|
US7714753B2|2007-12-11|2010-05-11|Intel Corporation|Scalable context adaptive binary arithmetic coding|
US8631060B2|2007-12-13|2014-01-14|Qualcomm Incorporated|Fast algorithms for computation of 5-point DCT-II, DCT-IV, and DST-IV, and architectures|
AT518224T|2008-01-04|2011-08-15|Dolby Int Ab|AUDIO CODERS AND DECODERS|
US8554550B2|2008-01-28|2013-10-08|Qualcomm Incorporated|Systems, methods, and apparatus for context processing using multi resolution analysis|
JP4893657B2|2008-02-29|2012-03-07|ソニー株式会社|Arithmetic decoding device|
AU2009220321B2|2008-03-03|2011-09-22|Intellectual Discovery Co., Ltd.|Method and apparatus for processing audio signal|
BR122012006269A2|2008-03-10|2019-07-30|Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V.|EQUIPMENT AND METHOD FOR HANDLING AN AUDIO SIGN HAVING A TRANSIENT EVENT|
JP5294342B2|2008-04-28|2013-09-18|公立大学法人大阪府立大学|Object recognition image database creation method, processing apparatus, and processing program|
US7864083B2|2008-05-21|2011-01-04|Ocarina Networks, Inc.|Efficient data compression and decompression of numeric sequences|
EP2144230A1|2008-07-11|2010-01-13|Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V.|Low bitrate audio encoding/decoding scheme having cascaded switches|
PL2346029T3|2008-07-11|2013-11-29|Fraunhofer Ges Forschung|Audio encoder, method for encoding an audio signal and corresponding computer program|
KR101456641B1|2008-07-11|2014-11-04|프라운호퍼 게젤샤프트 쭈르 푀르데룽 데어 안겐반텐 포르슝 에. 베.|audio encoder and audio decoder|
US7714754B2|2008-07-14|2010-05-11|Vixs Systems, Inc.|Entropy decoder with pipelined processing and methods for use therewith|
EP2146344B1|2008-07-17|2016-07-06|Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V.|Audio encoding/decoding scheme having a switchable bypass|
JPWO2010016270A1|2008-08-08|2012-01-19|パナソニック株式会社|Quantization apparatus, encoding apparatus, quantization method, and encoding method|
US20100088090A1|2008-10-08|2010-04-08|Motorola, Inc.|Arithmetic encoding for celp speech encoders|
US7932843B2|2008-10-17|2011-04-26|Texas Instruments Incorporated|Parallel CABAC decoding for video decompression|
US7982641B1|2008-11-06|2011-07-19|Marvell International Ltd.|Context-based adaptive binary arithmetic coding engine|
GB2466666B|2009-01-06|2013-01-23|Skype|Speech coding|
KR101622950B1|2009-01-28|2016-05-23|삼성전자주식회사|Method of coding/decoding audio signal and apparatus for enabling the method|
US8457975B2|2009-01-28|2013-06-04|Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V.|Audio decoder, audio encoder, methods for decoding and encoding an audio signal and computer program|
KR20100136890A|2009-06-19|2010-12-29|삼성전자주식회사|Apparatus and method for arithmetic encoding and arithmetic decoding based context|
ES2673637T3|2009-06-23|2018-06-25|Voiceage Corporation|Prospective cancellation of time domain overlap with weighted or original signal domain application|
MX2012004116A|2009-10-08|2012-05-22|Fraunhofer Ges Forschung|Multi-mode audio signal decoder, multi-mode audio signal encoder, methods and computer program using a linear-prediction-coding based noise shaping.|
EP2315358A1|2009-10-09|2011-04-27|Thomson Licensing|Method and device for arithmetic encoding or arithmetic decoding|
CA2778368C|2009-10-20|2016-01-26|Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V.|Audio encoder, audio decoder, method for encoding an audio information, method for decoding an audio information and computer program using an iterative interval size reduction|
US8149144B2|2009-12-31|2012-04-03|Motorola Mobility, Inc.|Hybrid arithmetic-combinatorial encoder|
PL2517200T3|2010-01-12|2015-10-30|Fraunhofer Ges Forschung|Audio encoder, audio decoder, method for encoding an audio information, method for decoding an audio information and computer program using a modification of a number representation of a numeric previous context value|
CN102131081A|2010-01-13|2011-07-20|华为技术有限公司|Dimension-mixed coding/decoding method and device|
WO2012048472A1|2010-10-15|2012-04-19|Huawei Technologies Co., Ltd.|Signal analyzer, signal analyzing method, signal synthesizer, signal synthesizing method, windower, transformer and inverse transformer|
US20120207400A1|2011-02-10|2012-08-16|Hisao Sasai|Image coding method, image coding apparatus, image decoding method, image decoding apparatus, and image coding and decoding apparatus|
US8170333B2|2011-10-13|2012-05-01|University Of Dayton|Image processing systems employing image compression|CA2871372C|2008-07-11|2016-08-23|Fraunhofer-Gesellschaft Zur Forderung Der Angewandten Forschung E.V.|Audio encoder and decoder for encoding and decoding audio samples|
KR101456641B1|2008-07-11|2014-11-04|프라운호퍼 게젤샤프트 쭈르 푀르데룽 데어 안겐반텐 포르슝 에. 베.|audio encoder and audio decoder|
CA2778368C|2009-10-20|2016-01-26|Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V.|Audio encoder, audio decoder, method for encoding an audio information, method for decoding an audio information and computer program using an iterative interval size reduction|
PL2517200T3|2010-01-12|2015-10-30|Fraunhofer Ges Forschung|Audio encoder, audio decoder, method for encoding an audio information, method for decoding an audio information and computer program using a modification of a number representation of a numeric previous context value|
KR20120084639A|2011-01-20|2012-07-30|한국전자통신연구원|Adaptive sorting table for entropy coding|
KR101362696B1|2011-10-19|2014-02-17|전북대학교산학협력단|Signal transformation apparatus applied hybrid architecture, signal transformation method, and recording medium|
US8880412B2|2011-12-13|2014-11-04|Futurewei Technologies, Inc.|Method to select active channels in audio mixing for multi-party teleconferencing|
CN103368682B|2012-03-29|2016-12-07|华为技术有限公司|Signal coding and the method and apparatus of decoding|
TWI508569B|2012-09-14|2015-11-11|Realtek Semiconductor Corp|Mobile high-definition link data converter and mobile high-definition link data conversion method|
US9818412B2|2013-05-24|2017-11-14|Dolby International Ab|Methods for audio encoding and decoding, corresponding computer-readable media and corresponding audio encoder and decoder|
PL3011692T3|2013-06-21|2017-11-30|Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V.|Jitter buffer control, audio decoder, method and computer program|
SG10201708531PA|2013-06-21|2017-12-28|Fraunhofer-Gesellschaft Zur Förderung Der Angewandten Forschung E V|Time Scaler, Audio Decoder, Method and a Computer Program using a Quality Control|
US20150113027A1|2013-10-22|2015-04-23|National Tsing Hua University|Method for determining a logarithmic functional unit|
JP2015206874A|2014-04-18|2015-11-19|富士通株式会社|Signal processing device, signal processing method, and program|
US9640376B1|2014-06-16|2017-05-02|Protein Metrics Inc.|Interactive analysis of mass spectrometry data|
US10455247B2|2014-06-29|2019-10-22|Lg Electronics Inc.|Method and apparatus for performing arithmetic coding on basis of concatenated ROM-RAM table|
EP2996269A1|2014-09-09|2016-03-16|Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V.|Audio splicing concept|
US9385751B2|2014-10-07|2016-07-05|Protein Metrics Inc.|Enhanced data compression for sparse multidimensional ordered series data|
US10062762B2|2014-12-23|2018-08-28|Stmicroelectronics, Inc.|Semiconductor devices having low contact resistance and low current leakage|
US10354421B2|2015-03-10|2019-07-16|Protein Metrics Inc.|Apparatuses and methods for annotated peptide mapping|
CN104872268B|2015-06-02|2018-06-12|应关雄|A kind of low-temperature deoxidant|
WO2017142967A1|2016-02-16|2017-08-24|Djo Consumer, Llc|Fitting system and method for customizable footwear|
US20180089309A1|2016-09-28|2018-03-29|Linkedln Corporation|Term set expansion using textual segments|
US10319573B2|2017-01-26|2019-06-11|Protein Metrics Inc.|Methods and apparatuses for determining the intact mass of large molecules from mass spectrographic data|
US10797723B2|2017-03-14|2020-10-06|International Business Machines Corporation|Building a context model ensemble in a context mixing compressor|
US10361712B2|2017-03-14|2019-07-23|International Business Machines Corporation|Non-binary context mixing compressor/decompressor|
US10546736B2|2017-08-01|2020-01-28|Protein Metrics Inc.|Interactive analysis of mass spectrometry data including peak selection and dynamic labeling|
US10510521B2|2017-09-29|2019-12-17|Protein Metrics Inc.|Interactive analysis of mass spectrometry data|
EP3483883A1|2017-11-10|2019-05-15|Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V.|Audio coding and decoding with selective postfiltering|
EP3483880A1|2017-11-10|2019-05-15|Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V.|Temporal noise shaping|
WO2019091573A1|2017-11-10|2019-05-16|Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V.|Apparatus and method for encoding and decoding an audio signal using downsampling or interpolation of scale parameters|
US11044495B1|2018-02-13|2021-06-22|Cyborg Inc.|Systems and methods for variable length codeword based data encoding and decoding using dynamic memory allocation|
US10929607B2|2018-02-22|2021-02-23|Salesforce.Com, Inc.|Dialogue state tracking using a global-local encoder|
US10915341B2|2018-03-28|2021-02-09|Bank Of America Corporation|Computer architecture for processing correlithm objects using a selective context input|
KR20200000649A|2018-06-25|2020-01-03|네이버 주식회사|Method and system for audio parallel transcoding|
TW202017373A|2018-07-06|2020-05-01|弗勞恩霍夫爾協會|Arithmetic encoders, arithmetic decoders, video encoder, video decoder, methods for encoding, methods for decoding and computer program|
US11106437B2|2019-01-14|2021-08-31|Microsoft Technology Licensing, Llc|Lookup table optimization for programming languages that target synchronous digital circuits|
US11144286B2|2019-01-14|2021-10-12|Microsoft Technology Licensing, Llc|Generating synchronous digital circuits from source code constructs that map to circuit implementations|
US11113176B2|2019-01-14|2021-09-07|Microsoft Technology Licensing, Llc|Generating a debugging network for a synchronous digital circuit during compilation of program source code|
US11093682B2|2019-01-14|2021-08-17|Microsoft Technology Licensing, Llc|Language and compiler that generate synchronous digital circuits that maintain thread execution order|
US10491240B1|2019-01-17|2019-11-26|Cyborg Inc.|Systems and methods for variable length codeword based, hybrid data encoding and decoding using dynamic memory allocation|
法律状态:
2019-01-08| B06F| Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]|
2020-01-28| B06U| Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]|
2020-05-19| B06A| Patent application procedure suspended [chapter 6.1 patent gazette]|
2020-10-20| B09A| Decision: intention to grant [chapter 9.1 patent gazette]|
2020-12-29| B16A| Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]|Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 11/01/2011, OBSERVADAS AS CONDICOES LEGAIS. |
优先权:
申请号 | 申请日 | 专利标题
US29435710P| true| 2010-01-12|2010-01-12|
US61/294,357|2010-01-12|
PCT/EP2011/050275|WO2011086067A1|2010-01-12|2011-01-11|Audio encoder, audio decoder, method for encoding and decoding an audio information, and computer program obtaining a context sub-region value on the basis of a norm of previously decoded spectral values|
[返回顶部]